Форум сайта python.su
Не могу понять откуда берется число возращаемое функцией .
def Fibonacci(n): if n == 0: return 0 elif n == 1 or n == 2: return 1 else: return Fibonacci(n - 1) + Fibonacci(n - 2) Fibonacci(35)
Офлайн
MalinaizerЧисло берётся из return, после того как там всё сработало и вышло через свои return'ы.
Не могу понять откуда берется число возращаемое функцией
Отредактировано py.user.next (Фев. 12, 2023 23:54:21)
Офлайн
py.user.nextКакое то не очевидное поведение, почему суммируется количество рекурсий и куда оно записывается ? !
Число берётся из return, после того как там всё сработало и вышло через свои return'ы.
Офлайн
MalinaizerТак ты не понимаешь просто, что такое рекурсия, что такое вызов функции и как он происходит.
Какое то не очевидное поведение
MalinaizerРекурсия здесь одна. Здесь нет множества каких-то рекурсий.
почему суммируется количество рекурсий
MalinaizerОно никуда не записывается.
и куда оно записывается
>>> def fact(n): ... if n > 1: ... return n * fact(n - 1) ... else: ... return 1 ... >>> fact(5) 120 >>> fact(0) 1 >>> fact(1) 1 >>> fact(2) 2 >>> fact(3) 6 >>> fact(4) 24 >>> fact(5) 120 >>>
Отредактировано py.user.next (Фев. 13, 2023 09:16:15)
Офлайн
py.user.nextВроде до перло . Получается что функция вызывается рекурсивно до те пор пока не не сработает if n > 1:? ID рекурсивно вызваных функций индентичен друг другу или занчанения изменились значит и ID разный ? Что происходит с предыдущей рекурсией , она остается в памяти до конца выполнения условия или удаляется ???
def fact(n):
… if n > 1:
… return n * fact(n - 1)
… else:
… return 1
…
>>> fact(5)
120
Офлайн
Вот смотри, видишь эти функции?
def fact1(n1): if n1 > 1: return n1 * fact2(n1 - 1) else: return 1 def fact2(n2): if n2 > 1: return n2 * fact3(n2 - 1) else: return 1 def fact3(n3): if n3 > 1: return n3 * fact4(n3 - 1) else: return 1 def fact4(n4): if n4 > 1: return n4 * fact5(n4 - 1) else: return 1 ...
Отредактировано py.user.next (Фев. 13, 2023 22:11:00)
Офлайн
Спасибо.
Офлайн