Itératif vers récursive

boubou1987 -  
 boubou1987 -
Bonjour,
la récursivité pour moi est la bête noir
svp y a t il des astuces pour passer d'une version itérative vers une version récursive????
merci d'avance

2 réponses

  1. Owersystem Messages postés 125 Statut Membre 29
     
    --
    Je crois qu'il n'y ai aucune astuce.

    Owersystem,membre de Commentçamarche.net.
    Facebook : Douglas Owersym.
    0
    1. boubou1987
       
      alors comment faire pour résoudre mon problème?????
      0
  2. KX Messages postés 19031 Statut Modérateur 3 020
     
    On peut toujours passer d'une fonction itérative à une fonction récursive.
    Remarque : l'inverse est faux, il existe des algorithmes récursifs qui ne peuvent pas être traités avec des boucles...

    Quels sont les langages que tu connais ? Que je te donnes des exemples que tu puisses comprendre ;-)
    0
    1. boubou1987
       
      merci de m'avoir répondu si tu peu me donner des exemples en C
      0
    2. KX Messages postés 19031 Statut Modérateur 3 020
       
      Ici j'ai fait une simple incrémentation alors que la boucle for permet de faire bien plus.
      Ce n'est pas magique, il faut réfléchir un peu mais le principe est le même à chaque fois.

      Remarque : l'intérêt d'utiliser la récursivité est souvent limité lorsqu'on peut faire la même chose aussi simplement de manière itérative. En effet il vaut parfois mieux utiliser une variable à incrémenter que de charger bêtement la pile qui est limitée en taille...

      #include <stdio.h>
      
      void f(int i)
      {
          printf("%d\n",i);
      }
      
      void iteratif(int n)
      {
          int i;
          for (i=0; // initialisation
               i<n; // condition d'arrêt
               i++) // incrémentation
          {
              f(i); // calcul
          }
      }
      
      void recursif(int n,int i=0) // initialisation
      {
          if (i<n)  // condition d'arrêt
          {
              f(i); // calcul
              recursif(n,i+1); // incrémentation
          }
      }
      
      int main()
      {
          iteratif(5);
          recursif(5);
          return 0;
      }
      0
    3. boubou1987
       
      merciiiiiiiiiiiiii c trè gentil de ta part
      0