/**
* @param {number} n
* @yields {number}
*/
function* factorial(n) {
};
/**
* const gen = factorial(2);
* gen.next().value; // 1
* gen.next().value; // 2
*/
2803. 阶乘生成器
编写一个生成器函数,该函数以一个整数 n
作为参数,并返回一个生成器对象,该生成器对象可以生成 阶乘序列 。
阶乘序列 的定义如下:n! = n * (n-1) * (n-2) * ... * 2 * 1
。
0 的阶乘被定义为 1。
示例 1:
输入:n = 5 输出:[1,2,6,24,120] 解释: const gen = factorial(5) gen.next().value // 1 gen.next().value // 2 gen.next().value // 6 gen.next().value // 24 gen.next().value // 120
示例 2:
输入:n = 2 输出:[1,2] 解释: const gen = factorial(2) gen.next().value // 1 gen.next().value // 2
示例 3:
输入:n = 0 输出:[1] 解释: const gen = factorial(0) gen.next().value // 1
提示:
0 <= n <= 18
原站题解
typescript 解法, 执行用时: 56 ms, 内存消耗: 42.1 MB, 提交时间: 2023-10-15 13:28:51
function* factorial(n: number): Generator<number> { if(n===0) yield 1; let result = 1; for (let i = 1; i <= n; i++) { result *= i; yield result; } }; /** * const gen = factorial(2); * gen.next().value; // 1 * gen.next().value; // 2 */
typescript 解法, 执行用时: 64 ms, 内存消耗: 42.1 MB, 提交时间: 2023-10-15 13:28:32
function* factorial(n) { yield 1; let i = 2; let res = 1; while (i <= n) { yield res = res * i; i++; } }; /** * const gen = factorial(2); * gen.next().value; // 1 * gen.next().value; // 2 */