为什么递归斐波那契有效?

Why does recursive fibonacci work?

我正在查看以下代码:

function _fibonacci(n) {
   if (n < 2){
     return 1;
   }else{
     return _fibonacci(n-2) + _fibonacci(n-1);
   }
} 
console.log(_fibonacci(5))

我了解这是如何工作的,但我不明白为什么会这样。有人可以向我解释为什么这样做吗?

很简单,位置0和1的斐波那契答案都是1(序列看起来像1 1 2 3 5 8等......)所以当它进入函数时n为0或1( n-2 递归调用和 n-1 递归调用都可能发生),结果为 1。对于所有其他值,它只是不断添加数字。

(请注意,序列中前 2 个的值可以是 0 1 或 1 1,具体取决于您对序列的定义。对于这个序列,显然假设前 2 个都是 1。)