我尝试制作一个带有参数的函数,然后将每个数字减去参数后的值减为零,然后将其推入数组(降序)。然后使用for循环将数组的每个索引乘以下一个索引,但返回的结果为null。请帮忙。

function factorialize(num) {
     var arrayOfFactorial = [];
     var factorial = 1;
     for(var i = num;i > 0;i--){
        arrayOfFactorial.push([i]);
        factorial = factorial * arrayOfFactorial[i];
     }

     return factorial;
}

factorialize(10);

最佳答案

在第一次迭代中,arrayOfFactorial的长度为1,而我等于num,它大于1,因此您尝试访问的arrayOfFactorial[num]不确定,这就是为什么要获得NaN的原因。
您可以将阶乘乘以i。另外,您实际上并不需要其他数组。



function factorialize(num) {
   var arrayOfFactorial = [];
   var factorial = 1;
   for(var i = num;i > 0;i--){
     arrayOfFactorial.push([i]);  //can be removed.
     factorial = factorial * i;
   }

   return factorial;
}

console.log(factorialize(10));

10-06 02:51