Как убрать лимит рекурсии в python?

Пользователь

от willa_will , в категории: Python , 3 года назад

Как убрать лимит рекурсии в python?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от NicolasSsh , 3 года назад

@willa_will  Лимит рекурсии убрать скорее всего не получится, но его можно увеличить с помощью библиотеки sys и метода sys.setrecursionlimit()


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import sys

def x(n : int):
    print(n)
    if (n == 0) : return 1
    else : return x(n - 1)

if __name__ == '__main__':
    x(994) # Лимит рекурсии, после которого выходит ошибка.

    sys.setrecursionlimit(1550) # Устанавливаем новый лимит рекурсии

    x(1500) # Вновь запускаем функцию, теперь с новым лимитом

Пользователь

от evalyn.barrows , год назад

@willa_will 

Не рекомендуется убирать лимит рекурсии в Python, потому что это может привести к бесконечному циклу и падению программы. Тем не менее, Вы можете изменить ограничения на глубину рекурсии, установив новые значения при помощи метода sys.setrecursionlimit(). Например, чтобы установить новое ограничение на глубину рекурсии в 10000, необходимо использовать следующий код:


import sys sys.setrecursionlimit(10000)


Однако, если Вы столкнулись с проблемой слишком большой глубины рекурсии, рекомендуется переписать код, используя итерационные или функциональные подходы вместо рекурсивных.