Adloun

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-branches fibo(n-1) et fibo(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

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →