Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript fibonacci的奇怪解决方案,需要解释_Javascript_Algorithm_Fibonacci - Fatal编程技术网

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+old 为什么此功能显示1 2。。而不是123

为什么此功能显示1 2。。而不是123

old
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。