Fibonacci de 50 : hors de portée en version naïve

Calculer fib(50) naïvement demande plus de 40 milliards d'appels : environ 13 minutes.

Valeur de F(50)
12 586 269 025
Appels de la version récursive naïve
40 730 022 147
Appels avec mémorisation
99
Additions de la version itérative
49
Durée de la version naïve
13 min 35 s

Le cas en détail

F(51) vaut 20 365 011 074, soit environ 40 milliards d'appels. Il faudrait plusieurs minutes pour un résultat que la version mémorisée donne en 99 appels. C'est le meilleur exemple pour justifier la mémorisation.

À retenir : Le gain ne vient pas d'un ordinateur plus rapide, mais d'un meilleur algorithme.

L'exemple chiffré

Valeurs utilisées dans ce cas (des exemples, pas des mesures) :

  • Rang n (0 à 200) : 50
  • Appels de fonction par seconde : 50000000
Valeur de F(50)
12 586 269 025
Appels de la version récursive naïve
40 730 022 147
Appels avec mémorisation
99
Additions de la version itérative
49
Durée de la version naïve
13 min 35 s

Modifiez les champs ci-dessus pour adapter le calcul à votre situation : le résultat se met à jour tout de suite.

Comment ça se calcule

Avec fib(0) = 0 et fib(1) = 1, le nombre d'appels C(n) vérifie C(n) = 1 + C(n-1) + C(n-2), ce qui donne C(n) = 2 F(n+1) - 1. Avec mémorisation, chaque valeur n'est calculée qu'une fois : 2n - 1 appels. La version itérative fait n - 1 additions.

Les résultats sont fournis à titre indicatif, sans valeur de conseil juridique, fiscal ou financier.

Pour aller plus loin