Почему функции не рекурсивно выполняют столько раз, сколько установлено с помощью sys.setrecursionlimit()?Python

Программы на Python
Anonymous
Почему функции не рекурсивно выполняют столько раз, сколько установлено с помощью sys.setrecursionlimit()?

Сообщение Anonymous »

Я понимаю, что sys.setrecursionlimit работает следующим образом:

Установите максимальную глубину стека интерпретатора Python равным limit< /эм>. Это ограничение не позволяет бесконечной рекурсии вызывать переполнение стека C и сбой Python.
Наивысший возможный предел зависит от платформы. Пользователю может потребоваться установить более высокий предел, если у него есть программа, требующая глубокой рекурсии, и платформа, поддерживающая более высокий предел. Это следует делать с осторожностью, поскольку слишком высокий предел может привести к сбою.

Предположим, мы реализуем тривиальную рекурсивную функцию и устанавливаем предел рекурсии равным 100:

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

def rec(N):
if N==0:
return 1
else:
return rec(N-1);

sys.setrecursionlimit(100)
Если я попробую Rec(99) (100 рекурсивных вызовов), я получу:

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

RuntimeError: maximum recursion depth exceeded
Чтобы вычислить Rec(99) мне нужно установить предел рекурсии равным 105.
Почему это так?

Подробнее здесь: https://stackoverflow.com/questions/708 ... setrecursi

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