Main Contents

La suite de Fibonacci

Coding, Maths

La suite de Fibonacci est l’une des suites mathématiques les plus connues. Elle doit son nom au mathématicien italien Leonardo Pisano, plus connu sous le pseudonyme de Fibonacci (1175 - 1250). Dans un problème récréatif posé dans un de ses ouvrages, le Liber Abaci, Fibonacci décrit la croissance d’une population de lapins :

« Possédant initialement un couple de lapins, combien de couples obtient-on en douze mois si chaque couple engendre tous les mois un nouveau couple à compter du second mois de son existence ? »

Source : Wikipedia

J’ai toujours beaucoup aimé les maths, notamment pour l’aspect logique et c’est pour ça que j’aime ce genre de choses. Cette suite je l’ai découverte (comme beaucoup, j’en suis sûr) dans le très bon Da Vinci Code.

J’ai voulu adapter cette suite en PHP, voilà ce que ça donne[1]. Bien entendu si vous avez une meilleure manière de faire ça, je suis ouvert à toute correction.

[1] Quand j’aurais un plugin qui gère correctement la coloration syntaxique, je mettrais le code directement dans la page

Palleas @ juin 16, 2008

18 commentaires

  1. Nk juin 16, 2008 @ 21:20

    rien à voir , mais cadeau :
    http://www.insidecrm.com/features/100-webmaster-videos-061208/ :-)

  2. S. Iksal juin 16, 2008 @ 21:36

    Si tu veux de quoi t’amuser (et lire) avec les maths et les codes, je te conseille “L’histoire des codes secrets” de Simon Singh, avec particulièrement à la fin des exercices de décodage sans les solutions ;-) Si tu veux juste jeter un oeil j’emmène le livre cette semaine, t’auras qu’à passer.

  3. Nk juin 16, 2008 @ 21:44

    Vu et ajouté à ma *wishlist* amazon :]

  4. Hugo juin 16, 2008 @ 21:49

    Pourquoi pas une fonction récursive ? ^^

  5. olympi juin 17, 2008 @ 0:04

    “Cette suite je l’ai découverte (comme beaucoup, j’en suis sûr) dans le très bon Da Vinci Code.”

    ah ? perso je l’ai vu au lycée et en algo justement, pour la bataille itératif vs récursif

  6. Meshvere juin 17, 2008 @ 0:55

    @olympi :
    Je crois bien que j’ai eu des cours sur Fibo dès la seconde, et 6ans plus tard j’ai toujours rien compris aux suites …

  7. Julien Tartarin juin 17, 2008 @ 10:19

    C’est marrant tu fais à l’envers (n-2 + n-1 vs n + n+1)

    C’est pas bien grave si ce n’est que ça t’oblige à un if + array_key_exists à chaque itération.

  8. Palleas juin 17, 2008 @ 11:54

    Pas faux, j’ai corrigé o/

  9. Nicolas juin 19, 2008 @ 21:21

    Sans vouloir être trop puriste, la formule est :

    f(0) = 1
    f(1) = 2

    f(n+2) = f(n+1) + f(n)

    Comme suggéré par Hugo, une fonction récursive serait bienvenue

  10. Palleas juin 19, 2008 @ 22:06

    Ouais c’est pas faux, à l’occasion peut être… C’est plutôt triste que je n’y ai pas pensé :x

  11. Julien Tartarin juin 19, 2008 @ 23:36

    Euh si c’est faux, f0=0 et f1=1 (et f2=1 et f3=2)

    Fais une fonction récursive et bench les 2 côte à côte. Je parie sur la “normale” (la récursion c’est comme l’objet faut faire quand il y a vraiment besoin). :)

  12. Nicolas juin 20, 2008 @ 9:47

    @Julien Tartarin :

    Je me suis trompé mais toi aussi.

    En fait les conditions initiales de la suite de Fibonacci sont :
    F1 = F2 = 1
    Et pour tout n > 0, on a :
    Fn+2 = Fn + Fn+1

  13. ys juin 20, 2008 @ 21:44

    @nicolas: julien a raison (0,1,1,2,3,…)

    @julien “Fais une fonction récursive et bench les 2 côte à côte. Je parie sur la “normale” (la récursion c’est comme l’objet faut faire quand il y a vraiment besoin).”

    => en php surement… après, selon les langages, la version récursive peut être aussi performante voire même plus que la version boucle (cf. tail call optimization)

    le côté intéressant (pour moi) de cette suite étant son rapport au nombre d’or.

    @palleas: vu que ça a l’air de t’amuser de coder des ptits problèmes de maths, va faire un tour du côté de projecteuler.net si tu connais pas déjà. ;-)

  14. Nicolas juin 21, 2008 @ 13:16

    @ys :

    Apparament tu ne sais pas lire non plus.

    > « Possédant initialement un couple de lapins, combien de couples obtient-on en douze mois si chaque couple engendre tous les mois un nouveau couple à compter du second mois de son existence ? »

    Le mot important est initialement! Les conditions initiales de la suite de Fibonacci sont : F1 = F2 = 1 couple de lapin puisque le couple n’engendre un nouveau couple qu’au bout de deux mois.
    Après tu peux considérer que le premier couple ne compte pas et dans ce cas F1 = F2 = 0 Mais dans tous les cas on n’a pas F1 = 0 et F2 = 1

  15. ys juin 21, 2008 @ 16:01

    @nicolas: merci à toi de me faire une petite morale sur le “savoir lire”, mais j’insiste et te retourne le compliment:

    pour info, julien n’a jamais parlé de f1=0 mais **f0=0**

    le premier terme de la suite étant bel et bien f0:

    http://fr.wikipedia.org/wiki/Suite_de_Fibonacci#Nombres_de_Fibonacci

  16. Palleas juin 22, 2008 @ 11:02

    Voilà voilà voilà…

  17. Julien Tartarin juin 23, 2008 @ 11:58

    Oui j’avais forcément raison puisque je n’ai pas raisonné, j’ai juste recopié wikipedia :)

    J’avais la flemme de rectifier la suite, merci !

  18. Meshvere juin 23, 2008 @ 23:39

    Sinon dans le genre math “utile” :
    http://www.levif.be/actualite/sciences-et-decouvertes/72-64-18845/une-equation-mathematique-pour-des-sandwiches-parfaits.html
    Les scientifiques n’ont que ça a faire on dirait …

Suivre les commentaires de ce billet par RSS

Laisser un commentaire