繁体   English   中英

如何计算用户在 Javascript 中输入的数字的阶乘,使用,do-loop,while-loop?

[英]How to calculate the factorial of a number entered by user in Javascript, using, do-loop, while-loop?

我之前的问题的快速跟进问题。 我想将代码添加到以下代码以计算用户在 Javascript 中输入的数字的阶乘。

<!DOCTYPE html>
<html>
<head>
<title>Sum of Numbers</title>
 <script>
  var numbers = prompt("Enter a  number 1-100");

  while (numbers!=null && (isNaN(parseInt(numbers)) || parseInt(numbers) >100 || parseInt(numbers) <1)) {
      numbers = prompt("Try again.Enter a  number 1-100");
  }
  

  if (numbers !=null){
        alert("Finally you entered a correct number");

  var sum = 0;
  var numOfLoops = numbers;
  var counter = 1;
  do {
    sum+=counter;
    counter++;
  }

  while (counter<=numOfLoops)
  alert ("The sum of numbers from 1 to " + numbers + "is =" +sum);
}
 </script>

</head>
<body>
    <script>
    document.write("<h1>Sum of Numbers</h1>");
        document.write("The sum of numbers from 1 to = " + numbers +  "&nbsp;is = "  +
            + sum + "<br><br>");
    </script>

</body>
</html>

如果您要对数字求和,请考虑使用算术级数公式。 如果您试图获得阶乘,则该方法如下所示。

如果您想使用循环求和,只需将*=更改为+=

While 循环方法

const fact = (n) => {
  
let res = 1;
  
while (n > 0) {
  res *= n;
  n--;
}
  
return res;
  
}

fact(5) // 120

边做边做

const fact = (n) => {
  
  let res = 1;
  
  do {
    res *= n;
    n--;
  } while (n > 0)
  
  return res;
  
}

fact(3) // 6

这应该够了吧。 :)

也许还考虑检查边缘情况,例如 n 是否为负。

祝你好运。

While循环:

const fact=n=>
  {
  if(n<0) throw 'factorial error on a negative number!'
  let r = 1
  while(n) r *= n--
  return r
  }

做时:

const fact=n=>
  {
  if(n<0) throw 'factorial error on a negative number!'
  let r = 1
  do  r *= n || 1 // in case of n == 0
  while (n--)
  return r;
  }

完整代码

 const msgPrompt_1 = 'Please enter a number from 0 to 100', msgPrompt_n = 'Try again.... Enter a number 0-100', fact = n => { let r = 1 while(n) r *= n-- return r } let numValue = parseInt(window.prompt(msgPrompt_1, ''), 10) while(isNaN(numValue) || numValue > 100 || numValue < 0) { numValue = parseInt(window.prompt(msgPrompt_n, ''), 10) } alert(`factorial value of ${numValue} is = ${fact(numValue)}` )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM