Как рассчитать факториал числа, введенного пользователем в Javascript, используя, do-l oop, while-l oop? - PullRequest
1 голос
/ 13 июля 2020

Быстрый ответ на мой предыдущий вопрос. Я хотел бы добавить следующий код для вычисления факториала числа, введенного пользователем в 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>

Ответы [ 2 ]

3 голосов
/ 13 июля 2020

Если вы пытаетесь суммировать числа, подумайте об использовании формулы ряда арифметики c. Если вы пытаетесь получить факториал, подход показан ниже.

Если вы хотите суммировать, используя l oop, просто измените *= на +=.

В то время как L oop Подход

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 отрицательно.

Удачи.

0 голосов
/ 13 июля 2020

Пока L oop:

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