Алгоритм: Если n = 0, возвращаем 1 (по определению 0! = 1) Если n < 0, выбрасываем ошибку Иначе умножаем все числа от 1 до n Особенности: Используем цикл for для перемножения чисел Результат храним в переменной result На каждой итерации умножаем текущее число на накопленный результат Альтернативное рекурсивное решение: def factorial_recursive(n): if n == 0: return 1 return n * factorial_recursive(n - 1) Важные моменты: Факториал растет очень быстро Для больших n может потребоваться использование больших чисел При n > 20 результат уже не помещается в стандартный int Оптимизация: Можно использовать memoization для хранения промежуточных результатов Для больших чисел стоит использовать библиотеку math с функцией factorial Проверка корректности: Факториал всегда положительный Факториал целого неотрицательного числа всегда целое число 0! = 1 по определению Это базовое решение, которое можно модифицировать под конкретные требования, например, добавив обработку больших чисел или оптимизацию для часто вызываемых значений.
Посчитайте факториал числа n! по формуле ниже:
�
!
=
1
∗
2
∗
3
∗
4
∗
.
.
.
∗
�
n!=1∗2∗3∗4∗...∗n
Например для входного числа 5 алгоритм расчета следующий:
5
!
=
1
∗
2
∗
3
∗
4
∗
5
=
120
5!=1∗2∗3∗4∗5=120
Sample Input 1:
5
Sample Output 1:
120
Sample Input 2:
0
Sample Output 2:
1
Sample Input 3:
1
Sample Output 3:
1
Sample Input 4:
2
Sample Output 4:
2