Python (école d'ingénieur) · Chapitre 6 · Exercice
Complexité de Fibonacci récursif
Complexité algorithmique
Énoncé
On considère l'implémentation récursive naïve de Fibonacci :
def fibo(n):
if n <= 1:
return n
return fibo(n-1) + fibo(n-2)
- Montrer que le nombre d'appels récursifs vérifie .
- En déduire que où est le -ième nombre de Fibonacci (, ).
- Déterminer la complexité asymptotique.
Corrigé
- Relation de récurrence : Pour , appeler
fibo(n)nécessite 1 appel (l'appel lui-même) plus tous les appels engendrés par les deux sous-branchesfibo(n-1)etfibo(n-2): Pour les cas de base : et .
- Preuve par récurrence de :
- Base :
- : et . Ok.
- : et . Ok.
- Hérédité : Supposons la relation vraie pour et . La propriété est démontrée pour tout .
- Complexité asymptotique : Les nombres de Fibonacci grandissent de façon géométrique en fonction du nombre d'or . On a , donc : La complexité temporelle est exponentielle.
100 % gratuit
La suite du chapitre est sur Adloun
- 7 autres exercices corrigés dans ce chapitre, et 7 à chercher avec le tuteur
- Les 2 QCM du chapitre, le premier sans compte
- Le tuteur, qui guide pas à pas sans donner la réponse
Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.