Можно ли получить глубину рекурсии?

Могу ли я узнать глубину рекурсии из функции?
Например, мне нужно чтобы если глубина рекурсии приближалась к лимиту она завершалась.
  • Вопрос задан
  • 163 просмотра
Пригласить эксперта
Ответы на вопрос 2
ketovv
@ketovv
Питонист
Что-то вроде такого
def recursion_func(..., level=0):
   ...
   recursion_func(..., level=level+1)
Ответ написан
Комментировать
drygdryg
@drygdryg
Python-разработчик
Регулировать глобальный лимит рекурсии можно с помощью соответствующих функций из модуля os:
import sys
print(sys.getrecursionlimit())  # Получить текущий лимит рекурсии
sys.setrecursionlimit(1500)  # Установить лимит рекурсии в 1500


Внутри отдельной функции можно ограничить количество рекурсивных вызовов с помощью специального параметра-счётчика, например, так (LIMIT не должен превышать глобальный лимит рекурсии):
LIMIT = 1500


def test(calls=0):
    ...
    if calls >= LIMIT:
        return
    return test(..., calls=calls + 1)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы