Eu tenho essa função recursiva da cauda aqui:
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 até n=997, então apenas quebra e cospe a RecursionError: maximum recursion depth exceeded in comparison. Isso é apenas um estouro de pilha? Existe uma maneira de contornar isso?
line <n>, in <module>rastreamentos na pilha) e esse código leva 2 quadros de pilha para n=1(porque o caso base é n < 1, portanto n=1ainda é recorrente). E acho que o limite de recursão não é inclusivo, como no erro "erro ao atingir 1000" não "se você exceder 1000 (1001)". 997 + 2é menor que 1000, portanto, 998 + 2não funciona porque atinge o limite.
recursive_function(997)funciona, quebra em 998. Quando você chama, recursive_function(998)ele usa 999 quadros de pilha e 1 quadro é adicionado pelo intérprete (porque seu código é sempre executado como se fosse parte do módulo de nível superior), o que faz com que atinja o limite de 1000.