/**
* @return {Generator<number>}
*/
var fibGenerator = function*() {
};
/**
* const gen = fibGenerator();
* gen.next().value; // 0
* gen.next().value; // 1
*/
2648. 生成斐波那契数列
请你编写一个生成器函数,并返回一个可以生成 斐波那契数列 的生成器对象。
斐波那契数列 的递推公式为 Xn = Xn-1 + Xn-2
。
这个数列的前几个数字是 0, 1, 1, 2, 3, 5, 8, 13
。
示例 1:
输入:callCount = 5 输出:[0,1,1,2,3] 解释: const gen = fibGenerator(); gen.next().value; // 0 gen.next().value; // 1 gen.next().value; // 1 gen.next().value; // 2 gen.next().value; // 3
示例 2:
输入:callCount = 0 输出:[] 解释:gen.next() 永远不会被调用,所以什么也不会输出
提示:
0 <= callCount <= 50
原站题解
typescript 解法, 执行用时: 60 ms, 内存消耗: 42.5 MB, 提交时间: 2023-04-23 10:18:14
function* fibGenerator(): Generator<number, any, number> { let first = 0 let second = 1 yield first yield second while(1){ let temp = first + second yield temp first = second second = temp } }; /** * const gen = fibGenerator(); * gen.next().value; // 0 * gen.next().value; // 1 */
javascript 解法, 执行用时: 64 ms, 内存消耗: 41.3 MB, 提交时间: 2023-04-23 10:17:31
/** * @return {Generator<number>} */ var fibGenerator = function*() { let [pre, cur] = [0, 1] yield pre yield cur while (true) { [pre, cur] = [cur, pre + cur] yield cur } }; /** * const gen = fibGenerator(); * gen.next().value; // 0 * gen.next().value; // 1 */
typescript 解法, 执行用时: 60 ms, 内存消耗: 42.5 MB, 提交时间: 2023-04-23 10:17:01
function* fibGenerator(): Generator<number, any, number> { let a = 0, b = 1 while (true) { yield a b += a a = b - a } }; /** * const gen = fibGenerator(); * gen.next().value; // 0 * gen.next().value; // 1 */