Fibonacci, ou l'arbre qui explose
Exercice · informatique (tronc commun des prépas scientifiques), chapitre 6 — Fonctions récursives
Énoncé
Coder la suite de Fibonacci () en version récursive naïve. Compter ses appels pour , montrer que sa complexité est exponentielle et proposer la version itérative en .
Corrigé
def fib(n: int) -> int:
if n <= 1:
return n
return fib(n - 1) + fib(n - 2)
Pour , l'exécution nécessite appels récursifs (dont 3 évaluations redondantes pour fib(2) et 5 pour fib(1)). Le nombre total d'appels croît à la même vitesse que la suite elle-même, soit de façon exponentielle en . Version itérative en :
def fib_iter(n: int) -> int:
a, b = 0, 1
for _ in range(n):
a, b = b, a + b
return a
Cette itération effectue additions, a une profondeur de pile nulle et résout le problème de redondance de calcul.
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.