![](/img/trans.png)
[英]javascript recursive function: Uncaught RangeError: Maximum call stack size exceeded
[英]Recursive JavaScript Function Results in “Range Error: Maximum call stack size exceeded”
我正在嘗試創建一個產生階乘的簡單遞歸 JavaScript function。 我想我在運行下面的代碼時耗盡了調用堆棧中的本地 memory 並可能觸發無限遞歸。
*注意:我想用遞歸來解決它。
function factorial(num, factor) {
//loop through descending order multiply
if (num === 1) {
return newNum
}
let newNum = num --;
let newProduct = num * newNum;
//recurse
return factorial(newNum, newProduct);
}
// Test cases
console.log(factorial(4)); // -> 24
console.log(factorial(6)); // -> 720
console.log(factorial(0)); // -> 1
關於如何以及為什么我應該修改上述代碼的任何建議。
您的減量有問題:那是因為在更改操作數之前返回了操作數的原始值(您需要將 num-- 更改為 --num)。 你能看看這個https://codeburst.io/javascript-increment-and-decrement-8c223858d5ed 嗎? 您可以通過此更改您的代碼
function factorial(num, factor=1) {
//loop through descending order multiply
if (num <= 1) {
return factor
}
let newProduct = factor * num--;
//recurse
return factorial(num, newProduct);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.