【发布时间】:2017-07-09 20:37:04
【问题描述】:
我正在经历一项 FreeCodeCamp 挑战。
" 返回所提供整数的阶乘。
如果整数用字母 n 表示,则阶乘是 所有小于或等于 n 的正整数的乘积。
因子通常用简写符号 n! 表示!
例如:5! = 1 * 2 * 3 * 4 * 5 = 120"
我已经知道最简单的方法是使用递归,但是当我发现这个事实时,我已经在尝试通过创建一个数组、将数字推入其中并将它们相乘来解决问题。但是我被困在了这一步。我创建了一个数组,其位数取决于函数 factorialize 参数,但我无法获得这些数字的乘积。我做错了什么:
function factorialize(num) {
var array = [];
var product;
for(i = 0; i<=num;i++) {
array.push(i);
for (j=0; j < array.length; j++) {
product *= array[j];
}
return product;
}
}
factorialize(5);
【问题讨论】:
-
您将
0作为第一个元素。所以很自然地,产品也会是0。 -
另外你应该将
product初始化为1。 -
关键是函数返回NaN,甚至不是0:)
-
查看亚当的answer 以获得简单的解决方案。
标签: javascript arrays