我尝试制作一个带有参数的函数,然后将每个数字减去参数后的值减为零,然后将其推入数组(降序)。然后使用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));