Enlever la récursivité

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 - 19 mars 2006 à 16:26
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013 - 19 mars 2006 à 19:19
Bonjour tout le monde

Je me demandais s'il existait une méthode générale pour enlever la récursivité d'une fonction (même si elle devient plus lente, il faut juste enlever l'appel récursif).
La fonction en question ressemble à ca:
int f(int x, int y)
{
...
return f(x1, y1)+f(x2, y2)+f(x3, y3);
}

Petite précision: pas le droit au goto
Pensez-vous que c'est possible?

6 réponses

cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
19 mars 2006 à 16:55
Moi j'aurais rajouter un argument résultat pour stocker ce que tu as besoin

Comme ça y'a aucun calcul en attente, mais bon y'aura toujours une récursivité mais moins gourmande.

if(!Meilleur("Joky")) return ERREUR;<
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
19 mars 2006 à 17:01
Entre nous ca ne change rien au problème :)
0
ctx_man Messages postés 285 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 20 janvier 2013 3
19 mars 2006 à 17:07
Salut !
Generallement j'arrive a me passer de la recursiviter avec un bon paquet de boucle, des conditions suplementaires et un petit paquet de variable pour stocker les resultats intermediaires.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 mars 2006 à 17:08
Je n'ai jamais rencontré de méthode générale pour enlever la récursivité.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
19 mars 2006 à 17:12
Merci, c'est bien ce que je pensais
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
19 mars 2006 à 19:19
C'est bien la récursivité, même si difficile à debugger, malgré cela, il existe de mémoire non pas une méthode générale, mais un ensemble de méthode bien défini permettant de virer la récursivité dans certains cas (utilisation de boucle infini, de goto meme si tu n'en veux pas, ....)

Au fait pourquoi tu ne veux pas de goto ?
Coté code machine ca sera un simple jmp, et pas plus compliqué a debugger que la récursivité.

Shell
0
Rejoignez-nous