Установите максимальную глубину стека интерпретатора Python равным limit< /эм>. Это ограничение не позволяет бесконечной рекурсии вызывать переполнение стека C и сбой Python.
Наивысший возможный предел зависит от платформы. Пользователю может потребоваться установить более высокий предел, если у него есть программа, требующая глубокой рекурсии, и платформа, поддерживающая более высокий предел. Это следует делать с осторожностью, поскольку слишком высокий предел может привести к сбою.
Предположим, мы реализуем тривиальную рекурсивную функцию и устанавливаем предел рекурсии равным 100:
Код: Выделить всё
def rec(N):
if N==0:
return 1
else:
return rec(N-1);
sys.setrecursionlimit(100)
Код: Выделить всё
RuntimeError: maximum recursion depth exceeded
Почему это так?
Подробнее здесь: https://stackoverflow.com/questions/708 ... setrecursi