因子乘以数字本身

时间:2017-06-20 08:33:08

标签: javascript factorial

除了递归地进行阶乘,我们如何解决使用for循环?

function factorial(num){
for(var i=num;i>0;i--){
num*=i
}
return num;
}
factorial(3);
//18

答案应为6但打印18

当我运行此代码时,对任何数字x说,因子结果再次乘以x。 factorial(3)给出6 * 3 ...... factorial(5)给出120 * 5.可能是什么问题?谢谢

3 个答案:

答案 0 :(得分:1)

您已经将num的值作为结果,并再次将其与此值相乘。您可以使用下一个较小的值开始迭代,并按照您的方式进行迭代。

function factorial(num) {
    for (var i = num - 1; i > 0; i--) {
        num *= i;
    }
    return num;
}
console.log(factorial(3));

使用while循环,与前缀减量进行较短的比较。

function factorial(num) {
    var i = num;
    while (--i) {
        num *= i;
    }
    return num;
}
console.log(factorial(3));

答案 1 :(得分:0)

您使用num初始化i时乘以相同的数字两次,使用i = num-1,如下所示:

function factorial(num){
  for(var i=num-1;i>0;i--){
  num*=i
}
  return num;
}
factorial(3)

答案 2 :(得分:0)

你已经将数字乘以自身,这不需要做。 只需要乘以少于给定数字的数字即可获得阶乘。

以下是相同的代码段:

function factorial(num){
    for(var i=num-1;i>0;i--){
       num*=i
    }
    return num;
}
factorial(3);