我正在尝试使用递归和无循环来获取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永远不会是1if(n == 1) return 1;),并且您的函数将不断调用自身直到崩溃。

请尝试使用function recur(n){

09-25 18:52