JasaScript. Как найти и вывести факториал 10! с помощью while?

нужен простейший код для этого, пожалуйста


Ответы (1 шт):

Автор решения: Javascript Dev

Код

Вот он:

let x = 1;  // В x будет лежать ответ
let n = 10;

while(n) x *= (n--); // Вот и весь код

console.log(x);

Принцип работы

Шаг первый - начало

Факториал - это результат умножения чисел от 1 до n
Код изначально выглядит так:

for(let i = 1; i <= n; i++) x *= i;

Шаг второй - меняем направление

Затем, идём не по возрастающей (1, 2, 3, 4 ... n), а по убывающей (n, n-1 ... 2, 1):

for(let i = n; i > 0; i--) x *= i;

Шаг третий - немного укорачиваем код

После этого, можно заменить i > 0 на i != 0 а затем и просто на i (при преобразование в логическое значение 0 преобразуется в false, всё остальное в true) Также можно заметить, что i-- вернёт значение i до операции:

let i = 5;
console.log(i--); // => 5, i теперь = 4
console.log(i--); // => 4, i теперь = 3

Зная это можно упростить код:

for(let i = n; i;) x *= (i--);

Шаг четвёртый - избавляемся от i

Потом можно заметить, что мы используем только в одном месте - let i = n Почему бы тогда не использовать вместо i просто n?

for(; n;) x *= (n--);

Шаг пятый - используем while

Ну, а потом заменить for на while

while(n) x *= (n--);

Важное замечание

Если n придётся использовать где-то ещё в программе, придётся использовать код из третьего шага

→ Ссылка