Itératif vers récursive

Fermé
boubou1987 - 23 avril 2011 à 12:07
 boubou1987 - 23 avril 2011 à 13:03
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

A voir également:

2 réponses

Owersystem Messages postés 101 Date d'inscription mardi 22 mars 2011 Statut Membre Dernière intervention 22 juin 2011 29
23 avril 2011 à 12:10
--
Je crois qu'il n'y ai aucune astuce.





Owersystem,membre de Commentçamarche.net.
Facebook : Douglas Owersym.
0
alors comment faire pour résoudre mon problème?????
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
23 avril 2011 à 12:41
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
merci de m'avoir répondu si tu peu me donner des exemples en C
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 23/04/2011 à 13:05
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
merciiiiiiiiiiiiii c trè gentil de ta part
0