Erreur "RecursionError" avec une fonction récursive
Citation de ouven le 13 avril 2025, 11 h 19 minSalut, j'ai écrit une fonction récursive, mais elle plante pour de grandes entrées :
def factorial(n):
return n * factorial(n - 1)print(factorial(1000))
Salut, j'ai écrit une fonction récursive, mais elle plante pour de grandes entrées :
def factorial(n):
return n * factorial(n - 1)
print(factorial(1000))
Citation de PythonTech le 13 avril 2025, 12 h 24 minBonjour ouven,
Exactement ! Quand tu essaies de calculer la factorielle de 1000 avec une fonction récursive classique:
RecursionError: maximum recursion depth exceeded in comparison!
Pourquoi cette erreur ?
Python a une profondeur maximale de récursion, généralement fixée à 1000 appels récursifs par défaut.
Donc ici, appeler fact(1000) fait 1000 appels empilés, ce qui atteint cette limite.
Pour éviter ce problème, utiliser une version itérative:def fact_iter(n): facto = 1 for i in range(2, n + 1): facto *= i return facto print(fact_iter(1000))En exécutant ce code vous obtenez un très grand nombre à la console qui est 1000!
Bonjour ouven,
Exactement ! Quand tu essaies de calculer la factorielle de 1000 avec une fonction récursive classique:
RecursionError: maximum recursion depth exceeded in comparison!
Pourquoi cette erreur ?
Python a une profondeur maximale de récursion, généralement fixée à 1000 appels récursifs par défaut.
Donc ici, appeler fact(1000) fait 1000 appels empilés, ce qui atteint cette limite.
Pour éviter ce problème, utiliser une version itérative:
def fact_iter(n):
facto = 1
for i in range(2, n + 1):
facto *= i
return facto
print(fact_iter(1000))
En exécutant ce code vous obtenez un très grand nombre à la console qui est 1000!