Partage
  • Partager sur Facebook
  • Partager sur Twitter

Passage algorithme récursif à itératif

    20 février 2020 à 18:01:54

    Bonjour, 

    J'ai écrit cette algorithme pour une fonction définie par f1(n) = 4 - 4/3 + 4/5 - 4/7... de cette manière 

    double f1(int n){
    
        if(n == 1)
            {
            return 4;
            }
        else if (n%2 == 0)
            {
            return -(4/((2*n)-1)) + f1(n-1);
            }
        else {
            return (4/((2*n)-1)) + f1(n-1);
        }
    }

    Je souhaite maintenant écrire cet algorithme de manière itérative, mais je n'arrive pas à trouver le même résultat pour une même valeur n avec ce code 

    double f2(int n){
    
        double res = 0;
    
        while(n >= 1){
            if(n == 1)
            {
            res = res + 4;
            }
        else if (n%2 == 0)
            {
            res = -(4/((2*n)-1)) + res;
            }
        else {
            res = (4/((2*n)-1)) + res;
        }
            n--;
        }
        return res;
    }

    Quelqu'un peut il m'aide à voir où je me suis trompé ?

    Merci !

    • Partager sur Facebook
    • Partager sur Twitter
      20 février 2020 à 18:46:41

      Salut,

      personnellement j'obtiens la même chose dans les deux cas

      Le seul problème que je vois c'est que ta division ne va pas calculer les décimale parce-que n est un entier.

      res = -(4/((2*(double)n)-1)) + res;

      À part ça je ne vois pas de problème personnellement.

      • Partager sur Facebook
      • Partager sur Twitter

      Passage algorithme récursif à itératif

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown