letcode刷题2648生成斐波那契数列的生成器函数

173 阅读2分钟

题目描述:

请你编写一个生成器函数,并返回一个可以生成 斐波那契数列 的生成器对象。

斐波那契数列 的递推公式为 Xn = Xn-1 + Xn-2 。

这个数列的前几个数字是 0, 1, 1, 2, 3, 5, 8, 13 。

思路和解法:

斐波那契数列的生成器函数是一个特殊类型的函数,它可以使用关键字function*来定义,并通过yield关键字暂停函数的执行并返回一个值。为了生成斐波那契数列的序列,我们可以使用两个变量ab来保存当前的数值和下一个数值。

  1. 初始化变量ab为0和1,用来保存当前的数值和下一个数值。
  2. 使用yield关键字返回当前的数值,然后在循环中更新ab的值为下一个数值。
  3. 在循环中,使用解构赋值的方式将b的值赋给a,将a+b的值赋给b,然后使用yield关键字暂停函数的执行并返回当前的数值。
  4. 在代码的其他部分,使用生成器函数创建一个生成器对象,并通过调用next()方法来获取斐波那契数列的每个数值。
  5. 验证生成器函数的正确性,可以使用console.log()方法打印出数值。

代码示例

/**
 * @return {Generator<number>}
 */
var fibGenerator = function*() {
    let a=0;b=1;
    while(true){
        yield a;
        [a,b]=[b,a+b]
    }
};
[jcode](https://code.juejin.cn/pen/7258817719435264041)
/**
 * const gen = fibGenerator();
 * gen.next().value; // 0
 * gen.next().value; // 1
 */

这道题主要考察对生成器函数的理解和运用,也考察了解构赋值的使用。在实际的开发工作中,生成器函数可以帮助我们简化代码,提高代码的可读性和可维护性。