Java Script factorial函数不会给出预期的结果

时间:2016-06-24 14:56:56

标签: javascript loops math

我是javascript的新手。我的代码在某些数字上工作正常,但Factorial(5)给了我121而不是120.

function factorialize(num) {
    var factorial=0;
    var x=0;

    for(factorial=1; factorial<=num; factorial++) {
        for(x=1; x<=num; x++) {
           factorial*= x;
        }
    } 

    return factorial;
}

factorialize(5);

3 个答案:

答案 0 :(得分:1)

出于某种原因,您尝试使用两个循环实现阶乘。其中一个循环上有factorial++,这将影响您的答案。

只需移除不需要的外环即可。

答案 1 :(得分:0)

如你所知5! = 1 * 2 * 3 * 4 * 5.

这是在JS中实现它的一种简单方法。

function factorialize(n) {    

    result = 1;
    for (i = 1; i<=n; i++) {
        result *= i;
    }

    return result;
}

答案 2 :(得分:0)

您可以使用递归方法执行此操作:

var factorial = function(number) {
  if (number <= 0) {
    return 1;
  } else {
    return number * factorial(number - 1);
  }
};

或者,如果你想做得好又短,只需使用三元:

var newFactorial = function(number) {
  return number <= 0 ? 1 : number * factorial(number - 1);
};