6 votes

Pourquoi Python lève RecursionError avant de dépasser la limite réelle de récursion ?

Donc j'ai essayé de jouer avec sys.getrecursionlimit() y sys.setrecursionlimit() méthodes. Par défaut, la limite de récursion était 3000 .

J'ai essayé de le vérifier en utilisant ce code :

def recursive(n):
    print(n)
    recursive(n+1)
recursive(0)

Il imprime les chiffres à 2979 il retarde d'une seconde, imprime 2980 puis relance le RecursionError

RecursionError: maximum recursion depth exceeded while calling a Python object

Je sais que l'erreur devrait être soulevée lorsqu'elle dépasse la limite de récursion que sys.getrecursionlimit() retourne, mais il ne

Il semble qu'il le fasse toujours 20 fois avant la limite de récursivité.

J'ai aussi essayé ceci :

sys.setrecursionlimit(100)
def recursive(n):
    print(n)
    recursive(n+1)
recursive(0)

Il fait toujours la même chose, il imprime tous les nombres à 79 retarde d'une seconde, imprime 80 et soulève ensuite la même erreur

Pourquoi il lève l'erreur avant qu'il ne dépasse la limite réelle de récursion que nous avons fixée ou obtenue par sys.getrecursionlimit() ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X