Forum Python

Fil d’Ariane du forum – Vous êtes ici :ForumLangage Python: Langage PythonErreur "RecursionError" avec une …
Please or S’enregistrer to create posts and topics.

Erreur "RecursionError" avec une fonction récursive

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))

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!