如何使用、do循环和while循环计算用户在Javascript中输入的数字的阶乘



快速跟进我之前的问题。我想在下面添加代码,以计算用户在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 Loop方法

const fact = (n) => {

let res = 1;

while (n > 0) {
res *= n;
n--;
}

return res;

}
fact(5) // 120

Do While方法

const fact = (n) => {

let res = 1;

do {
res *= n;
n--;
} while (n > 0)

return res;

}
fact(3) // 6

这就行了。:(

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

祝你好运。

While Loop:

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

Do While:

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)}`  )

最新更新