gpt4 book ai didi

javascript - 斐波那契数列的实现未按预期运行

转载 作者:行者123 更新时间:2023-11-28 18:32:13 25 4
gpt4 key购买 nike

我想打印斐波那契数列中从 1 和 2 开始的前 5 个数字。我希望此代码在单击按钮时打印 1,2,3,5,8,但是不知怎的,它只打印最后一个数字,在本例中是 8。如果我之后多次单击该按钮,它总是打印 2。为什么会这样?

/*
Fibonacci sequence is calculated by the formula An = An-1 + An-2
@param prev An-2
@param next An-1
@param n the first n numbers to print
*/
var count = 0; // keeps track of which number we are on
function fibonacci(prev, next, n) {
// Need to subtract 2 or else it will print the first 7 numbers instead of 5
return count++ < n - 2 ? fibonacci(Math.max(prev,next), prev+next, n) + "," : next;
}

document.querySelector('button').addEventListener('click', function() {
console.log(fibonacci(1, 2, 5));
});
<button>Click me</button>

最佳答案

您仅将 console.log 与最后的结果一起使用。如果您想记录所有这些,您应该在递归函数中使用它。

第二次单击该按钮时,它不起作用,因为 count 是全局的。您可以在事件监听器内将其重置为 0,但最好避免全局变量。

function fibonacci(current, next, n) {
if(n > 0) {
console.log(current);
fibonacci(next, current + next, n-1);
}
}
document.querySelector('button').addEventListener('click', function() {
fibonacci(1, 2, 5);
});
<button>Click me</button>

关于javascript - 斐波那契数列的实现未按预期运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37769720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com