Fibonacci en VBA (3méthodes)

Résolu/Fermé
VBA_Newb Messages postés 4 Date d'inscription jeudi 12 février 2009 Statut Membre Dernière intervention 23 février 2009 - 12 févr. 2009 à 02:54
VBA_Newb Messages postés 4 Date d'inscription jeudi 12 février 2009 Statut Membre Dernière intervention 23 février 2009 - 13 févr. 2009 à 03:25
Bonjour,
En mathématique, la suite de Fibonacci est définie comme suit :
Fibonacci(n) = 1 si n = 1 ou 2
= Fibonacci(n-1) + Fibonacci(n-2) si n>=3
Il existe un algorithme itératif pour fibonacci(n) comme suit :

initialiser la valeur de fibo à 0
initialiser i à 1

on répète n fois les 2 instructions suivantes :

fibo = fibo + i
i = fibo - i;

après n itérations, le résultat de fibonacci(n) est dans fibo.

Écrivez 3 fonctions, recevant la valeur de n pour calculer fibonacci de n:

1) en utilisant la boucle for…next
2) en utilisant la boucle while …
3) en utilisant la boucle do … Loop while …

j'aimerais écrire ces trois fonctions en suivant les instructions mentionnés plus haut. Si quelqu'un pourrait répondre à au moins une de ces trois là, ce serait très apprécier

merci

2 réponses

wilfried_42 Messages postés 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 242
12 févr. 2009 à 07:49
Bonjour

En fonction de ce que j'ai compris

Function fibo_fn (n as long) as long
    dim fibo as long
    dim i as long
    dim j as long
    fibo = 0 : i = 1
    for j = 1 to n
         fibo = fibo + i
         i = fibo - i
    next i
    fibo_fn = fibo
end function 

Function fibo_while (n as long) as long
    dim fibo as long
    dim i as long
    dim j as long
    fibo = 0 : i = 1 : j = 0
    While j< n
         fibo = fibo + i
         i = fibo - i
         j = j + 1
    wend
    fibo_While = fibo
end function 

Function fibo_do (n as long) as long
    dim fibo as long
    dim i as long
    dim j as long
    fibo = 0 : i = 1 : j = 0
    Do
         fibo = fibo + i
         i = fibo - i
         j = j + 1
    loop while j<n
    fibo_do = fibo
end function 
9