Python. Рекурсия. Что это?
я до сих пор не понял как работает рекурсия
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n - 1)
объясните подробнее пожалуйста
Ответы (2 шт):
Рекурсия — это когда функция вызывает саму себя изнутри. Ну вот на примере факториала:
def factorial(n): # объявление
if n == 0: # если n == 0, то...
return 1 #... то n!=0!=1, верно?
else: #А если не 0, то...
return n * factorial(n - 1) #n! = n * (n - 1)! и вызывает эту функцию для значения меньшего на 1.
Так понятно?
Кстати если нужен факториал, то лучше так:
import math
math.factorial(yournumber)
Вы вызываете функцию факториала, допустим, с числом 2:
Условие
if n == 0не выполняется, функция идёт дальше.(
factorial(n - 1)). Всё повторяется, но сn, уменьшенным на 1. Теперь условие снова не выполняется и функция вызывается ещё раз, но с числом0.Условие наконец выполнится и вернёт
1.Потом поднимаемся вверх до функции, вызванной с числом 1. Она вернёт 1 * 1 (т.к. функция ниже вернула 1), и ещё выше передаст свой результат, в данном случае - 1. Потом самая верхняя функция умножает результат предыдущей (1) на 2 и возвращает 2 в основной поток.
Вот и получается факториал 2: 1 * 2 = 2