为什么递归斐波那契有效?
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。)