Почему функции не рекурсивно выполняют столько раз, сколько установлено с помощью 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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