Une fonction qui s'appelle elle-même
Exercice supplémentaire · niveau 3 (difficile) · sciences numériques et technologie (seconde), chapitre 5 — Les fonctions · Définir et appeler une fonction
Énoncé
Une fonction peut s'appeler elle-même : on parle de récursivité. Comprendre la fonction ci-dessous, la dérouler pour , et dire ce qui se passerait sans son premier if.
def factorielle(n):
if n <= 1:
return 1
return n * factorielle(n - 1)Corrigé
Déroulé pour :
Les appels s'empilent jusqu'à , qui renvoie sans rappeler la fonction ; les multiplications se font alors en remontant.
Sans le premier if, rien n'arrêterait la descente : appellerait , puis … Python finirait par lever une RecursionError après environ mille appels imbriqués.
Ce premier if s'appelle le cas de base, et c'est l'exact équivalent de la condition d'arrêt d'un while : sans lui, une boucle tourne indéfiniment ; sans lui, une récursion descend indéfiniment. Toute fonction récursive doit en comporter un, et chaque appel doit s'en rapprocher.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.