Algorithme

walidou*verrati Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
KX Messages postés 19031 Statut Modérateur -
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

  1. Utilisateur anonyme
     
    Oui
    0
    1. walidou*verrati Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
       
      comment?
      0
  2. ElementW Messages postés 5690 Statut Contributeur 1 293
     
    '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
    1. Utilisateur anonyme
       
      Damned!
      0
    2. walidou*verrati Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
       
      !! mais soit disons ça ,, comment on stocke la somme des termes f1 et f2 ,, f1+f2?
      0
    3. walidou*verrati Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
       
      et si voulez écrivez moi un petit algorithme pour mieux comprendre votre principe !!! et mercii beaucoup
      0
  3. Utilisateur anonyme
     
    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
  4. KX Messages postés 19031 Statut Modérateur 3 020
     
    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
    1. KX Messages postés 19031 Statut Modérateur 3 020
       
      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
      1. walidou*verrati Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   > KX Messages postés 19031 Statut Modérateur
         
        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
    2. KX Messages postés 19031 Statut Modérateur 3 020
       
      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