我正在尝试创建一个产生阶乘的简单递归 JavaScript 函数。我想我在运行下面的代码时耗尽了调用堆栈中的本地内存,并可能触发无限递归。
*注意:我想用递归来解决它。
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
关于如何以及为什么我应该修改上述代码的任何建议。