Факториалом числа называют произведение всех натуральных чисел до него включительно. Например, факториал числа 5 равен произведению 1 * 2 * 3 * 4 * 5 = 120.
Формула нахождения факториала:
n! = 1 * 2 * … * n,
где n – это число, а n! – факториал этого числа.
Формулу можно представить в таком виде:
n! = 1 * … * (n-2) * (n-1) * n,
т. е. каждый предыдущий множитель меньше на единицу, чем последующий.
С помощью цикла можно найти факториал как по первой, так и второй формуле. Для вычисления факториала с помощью рекурсии используется вторая формула.
Вычисление факториала циклом
n = int(input())
factorial = 1
while n > 1:
factorial *= n
n -= 1
print(factorial)
Вычисление факториала с помощью цикла for:
n = int(input())
factorial = 1
for i in range(2, n+1):
factorial *= i
print(factorial)
Нахождение факториала рекурсией
def fac(n):
if n == 0:
return 1
return fac(n-1) * n
print(fac(5))
0 шаг. Вызов функции: fac(5)
- fac(5) возвращает fac(4) * 5
- fac(4) => fac(3) * 4
- fac(3) => fac(2) * 3
- fac(2) => fac(1) * 2
- fac(1) => 1
- 1 * 2 — возврат в вызов fac(2)
- 2 * 3 — fac(3)
- 6 * 4 — fac(4)
- 24 * 5 – fac(5)
- Возврат в основную ветку программы значения 120.
Функция factorial() модуля math
Модуль math языка программирования Python содержит функцию factorial
, принимающую в качестве аргумента неотрицательное целое число и возвращающую факториал этого числа:
>>> import math
>>> math.factorial(4)
24