列表

详情


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() 永远不会被调用,所以什么也不会输出

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
/** * @return {Generator<number>} */ var fibGenerator = function*() { }; /** * const gen = fibGenerator(); * gen.next().value; // 0 * gen.next().value; // 1 */

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
 */

上一题