【问题标题】:Finding the factorial using a loop in javascript在javascript中使用循环查找阶乘
【发布时间】:2017-04-30 16:11:27
【问题描述】:

我需要使用循环来查找给定数字的阶乘。显然,我在下面写的内容不会起作用,因为当i = inputNumber 时,等式将等于 0。

我怎样才能阻止我到达 inputNumber?

var inputNumber = prompt('Please enter an integer');
var total = 1;

for (i = 0; i <= inputNumber; i++){
    total = total * (inputNumber - i);
}

console.log(inputNumber + '! = ' + total);

【问题讨论】:

标签: javascript factorial


【解决方案1】:

这是一个错误i &lt;= inputNumber

应该是i &lt; inputNumber

var inputNumber = prompt('Please enter an integer');
var total = 1;

for (i = 0; i < inputNumber; i++){
    total = total * (inputNumber - i);
}

console.log(inputNumber + '! = ' + total);

【讨论】:

  • 或者我们可以从 1 for(i =1; i
【解决方案2】:

你可以保留这个: i

然后做这个改变: 总计 = 总计 * i;

那么代码 sn-p 将如下所示:

var inputNumber = prompt('Please enter an integer');
var total = 1;

for (i = 1; i <= inputNumber; ++i){
total = total * i;
}

console.log(inputNumber + '! = ' + total);

【讨论】:

  • for(var i=1; i
【解决方案3】:
var inputNumber = prompt('Please enter an integer');
var total = 1;

for (i = 0; i < inputNumber; i++){
    total = total * (inputNumber - i);
}

alert(inputNumber + '! = ' + total);

【讨论】:

  • 您应该解释您所做的更改。不解释就直接转储更正的代码不是很有帮助。
  • 在此处添加说明:应将“i
【解决方案4】:

您可以使用输入值和带有前缀decrement operator --while statement

var inputNumber = +prompt('Please enter an integer'),
    value = inputNumber,
    total = inputNumber;

while (--value) {                           // use value for decrement and checking
    total *= value;                         // multiply with value and assign to value
}

console.log(inputNumber + '! = ' + total);

【讨论】:

    【解决方案5】:

    使用总计 *= i;无需额外代码即可设置所有阶乘数学。此外,对于适当的阶乘,您希望从输入数字开始倒数,而不是增加。这会很好地工作:

    var inputNum = prompt("please enter and integer");
    var total = 1;
    for(i = inputNum; i > 1; i--){
     total *= i;
    }
    console.log(total);
    

    【讨论】:

      【解决方案6】:

      function factorialize(num) {
        
        var result = num;
        if(num ===0 || num===1){
          
          return 1;
        }
        
        while(num > 1){
          num--;
          result =num*result;
        }
        return result;
      }
      
      factorialize(5);

      【讨论】:

      • 或许解释一下你的解决方案让读者理解。谢谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-26
      相关资源
      最近更新 更多