Что такое глубина рекурсии в Python?Python

Программы на Python
Anonymous
Что такое глубина рекурсии в Python?

Сообщение Anonymous »

Насколько я понимаю, когда рекурсивная функция выполняется в Python, внутри создается стек, содержащий вызовы функции. Я предполагал, что глубина рекурсии — это количество функций в этом стеке, но, похоже, это не так.
Рассмотрим следующую псевдофакториальную функцию:

Код: Выделить всё

def f(n):
if (n == 1):
return 1
else:
return n*f(n-1)
Когда мы вызываем f с аргументом n = 1, он должен напрямую возвращать 1 после выполнения условия if.
Если я установлю максимальную глубину рекурсии равной 3, используя

Код: Выделить всё

import sys
sys.setrecursionlimit(3)
И затем я вызываю , возникает ошибка RecursionError.

Код: Выделить всё

RecursionError: maximum recursion depth exceeded while calling a Python object
Почему это происходит? Разве стек не должен содержать только один вызов f, который затем следует извлечь, точно так же, как f(1) возвращает 1?
Итак, что именно означает глубина рекурсии в Python?

Подробнее здесь: https://stackoverflow.com/questions/782 ... -in-python

Вернуться в «Python»