JavaScript中用Generator实现斐波那契数列的核心是function*定义生成器函数并用yield按需产出数值,典型写法为维护a、b两状态变量循环yield与更新,支持无限生成、数量/最大值限制及获取第n项。

JavaScript 中用 Generator 实现斐波那契数列,核心是利用 function* 定义生成器函数,配合 yield 暂停执行并逐个产出数值,既节省内存又支持按需计算。
基本实现:无限生成斐波那契数列
最简洁的写法是维护两个状态变量(a 和 b),每次 yield 当前项后更新为下一项:
function* fibonacci() {
let [a, b] = [0, 1];
while (true) {
yield a;
[a, b] = [b, a + b];
}
}
调用后返回一个迭代器,可手动调用 next(),或用 for...of 遍历:
const fib = fibonacci();
console.log(fib.next().value); // 0
console.log(fib.next().value); // 1
console.log(fib.next().value); // 1
console.log(fib.next().value); // 2
<p>// 或取前 10 项
for (const num of fibonacci()) {
if (num > 55) break; // 控制退出条件
console.log(num); // 0 1 1 2 3 5 8 13 21 34 55
}</p>
带上限的版本:生成指定数量或最大值内的斐波那契数
更实用的场景是限制输出长度或范围。可通过参数控制:
-
按数量生成:传入
count,用计数器终止循环 -
按最大值生成:传入
max,当a > max时break
示例(按数量):
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
function* fibonacciCount(count) {
let [a, b] = [0, 1];
for (let i = 0; i <h3>结合迭代器方法:获取第 n 项或转换为数组</h3><p>Generator 返回的是迭代器对象,可灵活组合原生方法:</p>
- 用展开运算符
[...gen]转为数组(注意:无限生成器会卡死,务必先限制) - 用
Array.from(gen, (v, i) => ...)做映射 - 手动调用
next()多次获取第 n 项(例如第 10 项)
获取第 n 项(索引从 0 开始):
function getFibAt(n) {
const gen = fibonacci();
let value;
for (let i = 0; i <h3>注意事项与常见误区</h3><p>使用 Generator 实现时需注意:</p>
- 不要对无限生成器直接用
[...fibonacci()],会进入死循环 -
yield只在暂停时返回值,后续调用next()才继续执行 - 每次调用
fibonacci()都创建新迭代器,彼此状态不共享 - 若需重用,应重新调用生成器函数,而不是重复调用同一个迭代器的
next()
Generator 的懒执行特性让它非常适合处理像斐波那契这样可以无限延伸、但实际只需前若干项的序列。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










