Algorithme

Fermé
walidou*verrati Messages postés 5 Date d'inscription lundi 26 octobre 2015 Statut Membre Dernière intervention 26 octobre 2015 - 26 oct. 2015 à 18:05
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 26 oct. 2015 à 22:38
salut! Est_ce que on peut realiser un algorithme de suite de fibonnaci ;; en utilisant juste 3 variables dans la déclaration ??

4 réponses

Utilisateur anonyme
26 oct. 2015 à 18:16
Oui
0
walidou*verrati Messages postés 5 Date d'inscription lundi 26 octobre 2015 Statut Membre Dernière intervention 26 octobre 2015
26 oct. 2015 à 20:16
comment?
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
26 oct. 2015 à 18:18
'lut, aux premiers abords c'est possible:
  • i
    , l'itération à laquelle on se trouve
  • f1
    , qui vaut
    fib(i-1)
    , c'est à dire la valeur précédente
  • f2
    , qui vaut
    fib(i-2)
    , la valeur précédente de f1

Mais en pratique il nous faut une variable supplémentaire pour stocker la valeur future de
f1
avant qu'on ne fasse tourner les valeurs précédentes avec
f2 = f1
.
Donc en fait, non.
0
Utilisateur anonyme
26 oct. 2015 à 18:20
Damned!
0
walidou*verrati Messages postés 5 Date d'inscription lundi 26 octobre 2015 Statut Membre Dernière intervention 26 octobre 2015
26 oct. 2015 à 19:34
!! mais soit disons ça ,, comment on stocke la somme des termes f1 et f2 ,, f1+f2?
0
walidou*verrati Messages postés 5 Date d'inscription lundi 26 octobre 2015 Statut Membre Dernière intervention 26 octobre 2015
26 oct. 2015 à 20:24
et si voulez écrivez moi un petit algorithme pour mieux comprendre votre principe !!! et mercii beaucoup
0
Utilisateur anonyme
26 oct. 2015 à 19:58
Bonsoir, on n'est pas là non plus pour faire le travail à ta place.
Tu peux tenter d'écrire quelque chose et on te diras si ça marche ou pas.
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
26 oct. 2015 à 20:59
Bonjour,

"3 variables dans la déclaration"
Est-ce que l'on compte le paramètre de la fonction ?
Genre, si je fais
fibo(n)
avec juste
n
, ça fait 0 ou 1 ?

int fibo(int n) {
    return n < 2 ? 1 : fibo(n - 1) + fibo(n - 2);
}

PS. Est-ce que l'on demande aussi à ce que l'algorithme soit efficace ?
Parce que celui-ci ne l'est pas vraiment... mais il a moins de 3 variables !
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
Modifié par KX le 26/10/2015 à 21:17
Sinon de manière optimisée on peut faire ça avec 2 variables (3 si on compte n).

int fibo(int n) {
    int f = 1;
    for (int f2 = 0; n > 0; n--, f = f2 + (f2 = f));
    return f;
}

Remarque :
Je code en Java, d'autres langages pourraient ne pas accepter cette écriture.
0
walidou*verrati Messages postés 5 Date d'inscription lundi 26 octobre 2015 Statut Membre Dernière intervention 26 octobre 2015 > KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024
26 oct. 2015 à 22:06
merci bcp ,, on a pas encore étudier le java ,, on est en pascal c tt c prk j'ai pas bien compris cette solution!
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
26 oct. 2015 à 22:38
Perso, je ne suis pas convaincu que ce soit que la faute du langage...

On peut faire exactement pareil avec Pascal pour la première fonction.

function fibo(n:integer):integer;
begin
     if (n < 2)
     then result := 1
     else result := fibo(n-1) + fibo(n-2)
end;

Remarque : même question que tout à l'heure, est-ce que ce code déclare 0 variable, 1 variable (en comptant n), ou 2 (avec en plus la valeur result en Pascal) ?

Pour ma deuxième proposition, ce n'est pas adaptable mais il est tout à fait possible de descendre à 2 variables aussi (3 ou 4 selon comment on compte).
0