【发布时间】:2016-07-01 04:56:06
【问题描述】:
尝试使用递归使我的斐波那契数列工作,但遇到错误maximum callstack exceeded。
代码:
var genFib = function(count, limit, fibArray) {
if (count === undefined || count === null) {
var count = 0;
}
if (fibArray === undefined || fibArray === null) {
var fibArray = [0, 1];
}
if (count === limit) {
console.log(fibArray);
return fibArray;
}
var pushFibNo = function(fibArray) {
fibArray.push(fibArray[fibArray.length - 1] + fibArray[fibArray.length - 2]);
return fibArray;
};
// console.log(count++);
// console.log(limit);
// console.log(pushFibNo(fibArray));
return genFib(count++, limit, pushFibNo(fibArray));
};
genFib(null, 50, null);
底部的三个console.logs 正在注销正确的数字,但我仍然收到maximum callstack 错误。
【问题讨论】:
-
在收到错误之前您获得了多少个数字(大约)?
-
找到了——你不能将
count++作为参数传入底部的return语句中,你必须传入count += 1。谁能解释一下为什么? -
在下面看我的回答,你总是使用相同的计数。
-
两个答案都正确
-
我认为 count++ 在您将其发送到递归调用后会增加 1,因此您实际上总是发送初始值,在这种情况下为零。查看@janje 的回答
标签: javascript recursion fibonacci