gpt4 book ai didi

javascript - 斐波那契的奇怪解决方案,需要解释

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:41:51 24 4
gpt4 key购买 nike

我对斐波那契算法的第一个实现是:

function fibo(max, old = 0, curr = 1) {
if( old === 0 && curr === 1 ) { console.log(curr) }
if(curr + old < max) {
console.log( curr + old);
fibo(max, curr, old + curr);
}
}

fibo(50);

我在 javascript 中玩斐波那契算法,我偶然发现了一个我无法解释的奇怪但更简洁的解决方案:

function fibo(max, old = 0, curr = old++) {
if(curr + old < max) {
console.log( curr + old);
fibo(max, curr, old + curr);
}
}

fibo(50);

为什么这个函数显示 1 1 2 .. 而不是 1 2 3 ... ?

最佳答案

why does this function display 1 1 2 .. and not 1 2 3 ... ?

old0 直到它到达默认参数的初始化(在第一次调用时),它递增到 1 并且将 old 的原始值设置为 curr

所以 old 在第一次调用时是 1 并且 curr0,并且 1+ 0第一次调用时为1,下次调用时为1+0

这有点令人困惑,因为在第一次调用时,old 最终落后于 curr,但总和当然是相同的。

关于javascript - 斐波那契的奇怪解决方案,需要解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48489185/

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