目前正在学习JS。

无法找出在递归过程中以某种方式修改的“ prev1”参数中的哪一点?
如果每次迭代中的“ console.log(prev1)”实际上都被修改,尽管在下面的代码中似乎都没有更改此参数。
拜托,帮我理解这件事。

        function fibonacci(n, prev1, prev2){
          //console.log(prev1);
          var current = prev1 + prev2;
          var fibonacci_string = current + " ";

          if(n > 1)
              fibonacci_string += fibonacci(n - 1, current, prev1);
          return fibonacci_string;

        }
        console.log(fibonacci(10, 1, 0));


console.log(prev1):

1
1
2
3
5
8
13
21
34
55

最佳答案

如果您查看递归调用:

           fibonacci(n - 1, current, prev1)
  // calls:          ⬇️      ⬇️      ⬇️
  function fibonacci(n,     prev1,   prev2)


您可以看到prev1获得了前一个current的值。

08-08 05:31