JasaScript. Как найти и вывести факториал 10! с помощью while?
нужен простейший код для этого, пожалуйста
Ответы (1 шт):
Код
Вот он:
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придётся использовать где-то ещё в программе, придётся использовать код из третьего шага