Javascript析因程序

时间:2015-08-08 17:35:38

标签: math factorial

为什么这个程序不起作用?

这是来自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);

3 个答案:

答案 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);
}