Un RecursionError se lanza en Python cuando una función recursiva supera la profundidad máxima del call stack, que por defecto es 1000 marcos. Python registra cada llamada de función en el stack y, cuando se alcanza ese límite, el intérprete detiene la ejecución para prevenir un desbordamiento de pila.
Por qué ocurre
- •Una función recursiva no tiene caso base, lo que causa recursión infinita.
- •El caso base existe, pero la entrada nunca lo alcanza por un error lógico.
- •Recursión profunda legítima sobre entradas grandes que genuinamente supera el límite por defecto.
- •Funciones mutuamente recursivas que se llaman entre sí en un ciclo sin terminar.
Ejemplos
Código que causa el error
def factorial(n):
return n * factorial(n - 1) # missing base case
print(factorial(5))Error en la terminal
Traceback (most recent call last):
File "app.py", line 4, in <module>
print(factorial(5))
File "app.py", line 2, in factorial
return n * factorial(n - 1)
[Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceededCómo solucionarlo
Agrega o corrige el caso base para que cada llamada recursiva se acerque a la terminación. Para entradas grandes, convierte el algoritmo a un bucle iterativo. Si la recursión profunda es genuinamente necesaria, puedes aumentar el límite temporalmente con sys.setrecursionlimit(), pero esto es un último recurso.
Código corregido
def factorial(n):
if n <= 1: # base case stops the recursion
return 1
return n * factorial(n - 1)
print(factorial(5)) # 120Errores relacionados
¿Listo para practicar tu inglés en el trabajo?
Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.
Prueba Lingua-e gratis