Tengo esta función recursiva de cola aquí:
def recursive_function(n, sum):
if n < 1:
return sum
else:
return recursive_function(n-1, sum+n)
c = 998
print(recursive_function(c, 0))
Funciona hasta n=997, luego simplemente se rompe y escupe a RecursionError: maximum recursion depth exceeded in comparison. ¿Es esto solo un desbordamiento de pila? ¿Hay alguna forma de evitarlo?
line <n>, in <module>trazas en la pila) y este código toma 2 cuadros de pila n=1(porque el caso base es n < 1, por n=1lo que aún se repite). Y supongo que el límite de recursión no es inclusivo, ya que en "error cuando alcanza 1000" no "error si excede 1000 (1001)". 997 + 2es inferior a 1000, por lo 998 + 2que no funciona porque llega al límite.
recursive_function(997)funciona, se rompe a las 998. Cuando lo llama recursive_function(998), usa 999 marcos de pila y el intérprete agrega 1 marco (porque su código siempre se ejecuta como si fuera parte del módulo de nivel superior), lo que hace que llegue al límite de 1000.