簡體   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