Javascript fibonacci的奇怪解决方案,需要解释
我对斐波那契算法的第一个实现是:Javascript fibonacci的奇怪解决方案,需要解释,javascript,algorithm,fibonacci,Javascript,Algorithm,Fibonacci,我对斐波那契算法的第一个实现是: 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); 函数fibo(最大值,旧值=0,当前值=1)
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);
函数fibo(最大值,旧值=0,当前值=1){
if(old==0&&curr==1){console.log(curr)}
如果(当前+旧<最大值){
控制台日志(当前+旧);
fibo(最大值、当前值、旧值+当前值);
}
}
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);
函数fibo(max,old=0,curr=old++){
if(curr+oldold
是0
,直到它到达默认参数的初始化(在第一次调用时),该参数将其递增为1
,并将old
的原始值设置为curr
因此,第一次通话时,old
为1
和curr
为0
,第一次通话时,1+0
为1
,下次通话时为1+0
这有点令人困惑,因为在第一次调用时,旧的
最终位于当前的
后面,但是总和当然是相同的
为什么此功能显示1 2。。而不是123
old
是0
,直到它到达默认参数的初始化(在第一次调用时),该参数将其递增为1
,并将old
的原始值设置为curr
因此,第一次通话时,old
为1
和curr
为0
,第一次通话时,1+0
为1
,下次通话时为1+0
这有点让人困惑,因为在第一次调用时,
旧的
最终位于当前的
后面,但是总数当然是一样的。那50
来自哪里?那50
来自哪里?非常感谢!我看到了now@Ben字体对不起,我太过分了。我加了一个更正。postifix++
表示原始值被分配给curr
,因此它是0
。因此,在下一次通话中,对于old
您将获得1
,对于curr
您将获得0+1
。它显示1 1 2 3。。。在控制台里啊,对不起。有一段时间我真的很困惑,因为你的描述在我的控制台上似乎是正确的,似乎只给出了一个1
,但后来我注意到它显示了右边该值的计数为2。非常感谢!我看到了now@Ben字体对不起,我太过分了。我加了一个更正。postifix++
表示原始值被分配给curr
,因此它是0
。因此,在下一次通话中,对于old
您将获得1
,对于curr
您将获得0+1
。它显示1 1 2 3。。。在控制台里啊,对不起。有一段时间我真的很困惑,因为你的描述在我的控制台上似乎是正确的,似乎只给出了一个1
,但后来我注意到它显示了右边该值的计数为2。