JS函数顶部计算阶乘不起作用

时间:2018-09-27 09:18:23

标签: javascript

我正在从coderbyte那里进行挑战,您必须创建一个函数来计算给定数字的阶乘,这不是我的可行解决方案。

function firstFactorial(num) { 

  for (var i = num; i == 1; i--) {
      num = num * i;
  }
  return num;     
}

它只是返回我作为参数传入的任何数字,而我正试图了解问题所在。与循环有关还是与变量作用域有关?

3 个答案:

答案 0 :(得分:1)

  1. i == 1处于循环状态,对于除1以外的所有数字始终为false,因此它将始终返回与结果相同的数字。

  2. i = num应该是i = num-1才能获得正确的阶乘。

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

console.log( FirstFactorial(5))

答案 1 :(得分:0)

您的for循环有点混乱。现在应该可以了。

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

console.log(factorial(5));

答案 2 :(得分:0)

您的问题是您有一个循环条件i == 1。对于阶乘,应为i >= 1i > 1,具体取决于您使用的算法。我对阶乘函数的看法是:

function calculate(factorial) {
    var newFactorial = factorial;
    while (factorial > 1) {
        factorial--;
        newFactorial *= factorial;
    }
    return newFactorial;
}