题目描述:
请你编写一个生成器函数,并返回一个可以生成 斐波那契数列 的生成器对象。
斐波那契数列 的递推公式为 Xn = Xn-1 + Xn-2 。
这个数列的前几个数字是 0, 1, 1, 2, 3, 5, 8, 13 。
思路和解法:
斐波那契数列的生成器函数是一个特殊类型的函数,它可以使用关键字function*来定义,并通过yield关键字暂停函数的执行并返回一个值。为了生成斐波那契数列的序列,我们可以使用两个变量a和b来保存当前的数值和下一个数值。
- 初始化变量
a和b为0和1,用来保存当前的数值和下一个数值。 - 使用
yield关键字返回当前的数值,然后在循环中更新a和b的值为下一个数值。 - 在循环中,使用解构赋值的方式将
b的值赋给a,将a+b的值赋给b,然后使用yield关键字暂停函数的执行并返回当前的数值。 - 在代码的其他部分,使用生成器函数创建一个生成器对象,并通过调用
next()方法来获取斐波那契数列的每个数值。 - 验证生成器函数的正确性,可以使用
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
*/
这道题主要考察对生成器函数的理解和运用,也考察了解构赋值的使用。在实际的开发工作中,生成器函数可以帮助我们简化代码,提高代码的可读性和可维护性。