J'ai cette fonction récursive de queue ici:
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))
Ça marche n=997, puis ça casse et crache a RecursionError: maximum recursion depth exceeded in comparison. Est-ce juste un débordement de pile? Y a-t-il un moyen de le contourner?
line <n>, in <module>traces dans la pile) et ce code prend 2 cadres de pile pour n=1(parce que le cas de base l'est n < 1, donc n=1il revient toujours). Et je suppose que la limite de récursivité n'est pas inclusive, comme dans son "erreur lorsque vous frappez 1000" et non "erreur si vous dépassez 1000 (1001)". 997 + 2est inférieur à 1000, donc cela 998 + 2ne fonctionne pas car il atteint la limite.
recursive_function(997)ça marche, ça casse 998. Lorsque vous l'appelez, recursive_function(998)il utilise 999 cadres de pile et 1 cadre est ajouté par l'interpréteur (car votre code est toujours exécuté comme s'il faisait partie du module de niveau supérieur), ce qui le fait atteindre la limite de 1000.