Suite de Fibonacci
Introduction
Approche récursive naïve
Implémentation directe
La suite de Fibonacci, grand classique, peut s'implémenter de diverses façons. On peut d'abord s'y prendre naïvement, en collant à la définition même de la suite :
Fonction F(n)
Si n <= 1
Retourner 1
Retourner F(n - 1) + F(n - 2)
Soit n = Lire
Afficher F(n)
Nombre d'appels récursifs
On peut calculer le nombre Rn d'appels récursifs effectués lors d'un appel à F(n) avec n > 1. On a en effet :
On peut alors poser R'n = Rn + 1 d'où directement :
On retrouve la suite de Fibonacci, mais avec des valeurs initiales doublées :
En mettant 2 en facteur, on en déduit directement :
La croissance de la suite étant exponentielle, ce nombre devient rapidement immense, et cet algorithme n'est applicable sur nos machines que pour des valeurs faibles (pe. moins de 42).
Approche itérative
Implémentation
Une version itérative est plus efficace sans être beaucoup plus complexe.
Soit terme_prec = 1
Soit terme_act = 1
Soit n = Lire
Pour k de 2 à n
Soit tmp = terme_prec + terme_act
terme_prec = terme_act
terme_act = tmp
Afficher terme_act
La vision matricielle
Présentation de l'idée
On en déduit par une récurrence descendante directe :
Complexité
On sait exponentier une matrice carrée en temps logarithmique.