如何修改JavaScript斐波那契数列代码使其在数值超过1000时停止
如何让斐波那契数列在最后一项大于1000时停止生成?
我懂你的需求——原来的代码靠固定项数limit来终止数列生成,现在要改成当最后一个数值超过1000时自动停止。我们只需要把循环的判断逻辑从「项数限制」换成「数值限制」就行,下面是调整后的代码和两种不同需求的实现方案:
方案1:最后一项不超过1000(生成到≤1000的最大项)
这个方案会确保数列里的所有项都≤1000,当计算出的下一项超过1000时就停止:
function fibonacci() { // 初始化斐波那契数列前两项 let fib = [1, 1]; while (true) { // 计算下一个斐波那契数 const nextNum = fib[fib.length - 1] + fib[fib.length - 2]; // 下一项超过1000就跳出循环 if (nextNum > 1000) { break; } // 否则加入数列 fib.push(nextNum); } return fib; } console.log(fibonacci());
方案2:最后一项可以超过1000(生成到第一个>1000的项后停止)
如果你希望数列包含那个超过1000的项,之后再停止,就用这个版本:
function fibonacci() { let fib = [1, 1]; // 只要最后一项≤1000,就继续生成下一项 while (fib[fib.length - 1] <= 1000) { const nextNum = fib[fib.length - 1] + fib[fib.length - 2]; fib.push(nextNum); } return fib; } console.log(fibonacci());
额外说明
原来的代码里同时使用了传入的nums数组和内部的data数组,逻辑有点冗余。上面的修改直接在函数内部维护数列,调用起来更简洁,也避免了外部数组可能带来的副作用。
内容的提问来源于stack exchange,提问作者user323111
相关产品推荐
相关产品推荐

