Lingua-e
Python

¿Qué significa RecursionError?

← Errores

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

Python

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 exceeded

Có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))  # 120

Errores 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