Top.Mail.Ru
Ответы

RecursionError: maximum recursion depth exceeded

Питон ругается на видимо лимит рекурсии, хотя если я ее увеличу, все равно та же ошибка появится. НО, если я скопирую код с решуегэ, то все работает, если я напишу идентичный код вручную, то выдает ошибку, в чем причина?

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Ученик
2мес

Это из за глубины рекурсии дефолт 1000 меняем вот так
import sys
sys.setrecursionlimit(10**5)
Теперь 10^5

Аватар пользователя
Просветленный

Причина, по которой возникает ошибка RecursionError: maximum recursion depth exceeded, связана с циклической зависимостью внутри функции F(n). Код рекурсивно вызывает сам себя бесконечно, когда n больше 1, что приводит к превышению глубины рекурсии. Проблема не в лимите рекурсии, а в логике функции.
Корректный код функции факториала:

12345678
 def factorial(n): 
    if n == 1: 
        return 1 
    else: 
        return n * factorial(n - 1) 
 
print(factorial(4))  # Вывод: 24 
 

Ваш код создает бесконечный цикл вызовов, поэтому возникает ошибка. Если вы копируете код с РешуЕГЭ, убедитесь, что в коде нет логических ошибок. Вот пример корректного рекурсивного кода для вычисления факториала:

12345678
 def F(n): 
    if n == 1: 
        return 1 
    else: 
        return F(n - 1) * n 
 
print(F(4))  # Вывод: 24 
 


Таким образом, проблема заключается в логике рекурсивного вызова. Проверьте исходный код на предмет ошибок в логике и убедитесь, что не создается бесконечный цикл вызовов.