【发布时间】:2012-02-09 08:04:53
【问题描述】:
当我来到描述函数递归的一章时,我是 Javascript 的新手并且正在阅读它。它使用示例函数来查找斐波那契数列的第 n 个数。代码如下:
function fibonacci(n) {
if (n < 2){
return 1;
}else{
return fibonacci(n-2) + fibonacci(n-1);
}
}
console.log(fibonacci(7));
//Returns 21
我无法准确掌握该函数的作用。有人可以解释这里发生了什么吗?我被困在函数调用自身的第 5 行。这里发生了什么?
【问题讨论】:
-
我让问题更笼统(删除了标题和标签中的“javascript”属性)。
-
顺便说一句,该代码看起来不正确。应该是
if (n < 2) return n;。fibonacci(0)应该返回 0,而不是 1,fibonacci(7)应该是 13,而不是 21。 -
不,斐波那契数列从 1 开始,而不是 0。
-
@ThomSmith - 实际上,它可以从 0 开始。0,1,1,2,3,5,8... 我们甚至可以让序列倒退。
-
@woodchips 我认为斐波那契数列实际上应该从 0 开始。