def fact(n):
if n == 0:
return 1
return n * fact(n - 1)
print(fact(4))
Код вычисляет факториал числа 4 рекурсивным способом.
Функция fact(n)
:
n
равно 0, возвращает 1 (базовый случай рекурсии).n
умноженное на результат вызова fact(n-1)
(рекурсивный вызов).При вызове fact(4)
, произойдут следующие вычисления:
fact(4)
вернет 4 * fact(3)
fact(3)
вернет 3 * fact(2)
fact(2)
вернет 2 * fact(1)
fact(1)
вернет 1 * fact(0)
fact(0)
вернет 1
В результате, будет вычислено 4 * 3 * 2 * 1 * 1 = 24
.
Программа выведет на экран 24
.
Задача: Реализовать функцию для вычисления факториала числа с использованием рекурсии.
Решение на Python:
def fact(n):
if n == 0:
return 1
return n * fact(n - 1)
print(fact(4))
Разбор решения:
fact(n)
вычисляет факториал числа n
.n
равно 0, функция возвращает 1 (факториал 0 равен 1). Это необходимо, чтобы остановить рекурсию.n
больше 0, функция возвращает n
, умноженное на результат вызова самой себя с аргументом n - 1
(fact(n - 1)
).fact(4) = 4 * fact(3)
fact(3) = 3 * fact(2)
fact(2) = 2 * fact(1)
fact(1) = 1 * fact(0)
fact(0) = 1
(базовый случай)fact(4) = 4 * 3 * 2 * 1 * 1 = 24
Ожидаемый вывод:
24
Дополнительные замечания:
RecursionError
.n
.