試圖讓我的斐波那契序列使用遞歸工作,但運行到錯誤maximum callstack exceeded
。使用遞歸的JavaScript斐波納契
代碼:
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
錯誤。
在得到錯誤之前得到了多少個數字(aprox)? – Soren
發現它 - 你不能在'count ++'作爲返回語句中的參數傳遞給底部,你必須傳入'count + = 1'。誰能解釋爲什麼? –
看到我的答案在下面,你總是使用相同的計數。 – destoryer