我正在尝试使用递归和无循环来获取array(recurArray)的所有数量的阶乘。
我收到错误消息“超出了最大调用堆栈大小”
我认为for循环逻辑存在一些问题,如果有人可以解释错误原因及其解决方法,这将非常有帮助
谢谢。
//码
function recur(){
var n;
var result;
if(n == 1)
return 1;
var recurArray = [5,6,7,8,9];
for (var i = 0;i<recurArray.length;i++){
n = recurArray[i];
result = n * recur(n-1);
n=n-1;
}
console.log("val of n " + n + "value of i " + i);
return result;
}
recur();
最佳答案
您的recur()
函数可能应该以n
作为参数,否则n
永远不会是1
(if(n == 1) return 1;
),并且您的函数将不断调用自身直到崩溃。
请尝试使用function recur(n){
。