为什么这个程序不起作用?
这是来自http://www.freecodecamp.com/challenges/bonfire-factorialize-a-number
的练习function factorialize(num)
{
for (i=num; i>0; i--)
{
num*= num[i];
}
return num;
}
factorialize(5);
答案 0 :(得分:1)
有点太晚了......
您应该使用num *= i;
代替num *= num[i]
。您的代码所做的是尝试访问未定义的数字对象i
的属性num
。
此外,您应该将循环初始化更改为for(var i = num - 1; i > 1; i--)
以仅创建局部变量而不是全局变量。此外,将num
乘以num
(第一个循环周期)会得到不正确的结果。最后但并非最不重要的是,乘以1(最后一个循环周期)是没用的。
答案 1 :(得分:0)
您与num[i]
相乘,但num不是数组(这是您收到错误的地方)。此外,您的第一次迭代将乘以5 * 5这是错误的,它应该是5 * 4,所以我们从i=num-1
开始。而且,i> 1就够了,num *= 1
毫无意义。
这有效:
function factorialize(num)
{
for (i=num-1; i>1; i--)
{
num*= i;
}
return num;
}
factorialize(5);
答案 2 :(得分:-1)
@Feinmann可以使用下面的递归函数来实现这个答案。
function factorialize(num) {
if(num==0) {
return 1;
}
return num * factorialize(num-1);
}