У меня одного криво работает рекурсия на python3?

Есть очень простой код, который запускает рекурсию и выводит текущую глубину рекурсии:

import sys

sys.setrecursionlimit(1000000000)


def rec(deep):
    print('deep =', deep)
    rec(deep + 1)


if __name__ == '__main__':
    rec(0)

У меня он почему-то падает после глубины 3219, хотя в начале программы я установил огромный лимит рекурсии. Ошибка:

Process finished with exit code -1073741571 (0xC00000FD)

Это у меня одного так?

Я запускал на Python3.6


Ответы (2 шт):

Автор решения: Inventor

Существует такое понятие как переполнение стека, оно не даёт вызывать рекурсию много раз. Для понимания нужно углубляться в особенности языка и операционных систем. Но лучше рекурсию заменить на цикл, это будет правильным решением

→ Ссылка
Автор решения: Sergei Kirjanov

Очень жаль что python не оптимизирует хвостовую рекурсию (из коробки).

Нашел статью: https://towardsdatascience.com/python-stack-frames-and-tail-call-optimization-4d0ea55b0542

Там описывается решение с декоратором и с изменением байт-кода.

Сам не проверял.

→ Ссылка