阶乘乘以数字本身

Factorial multiplied by the number itself

除了递归求阶乘外,我们如何使用for循环解决?

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

答案应该是 6 但打印出 18

当我 运行 这段代码说任何数字 x 时,阶乘结果再次乘以 x。 阶乘(3) 给出 6*3... factorial(5) 给出 120*5.What 可能是问题所在?谢谢

当你用 num 初始化 i 时,你乘以相同的数字两次,像这样使用 i=num-1:

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

您已经有了 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));

您已将数字与自身相乘,不需要这样做。 只需要与小于给定数字的数字相乘即可得到阶乘。

下面是相同的代码片段:

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