Casser la récursivité en java
moh-23
Messages postés
28
Date d'inscription
Statut
Membre
Dernière intervention
-
Pacorabanix Messages postés 3248 Date d'inscription Statut Membre Dernière intervention -
Pacorabanix Messages postés 3248 Date d'inscription Statut Membre Dernière intervention -
salut
voici mon problème j'ai une methode recurssive (sur les arbre) une fois elle fait appel a gauche et ou a droit jusqu'a l'arriver a la valeur définie
apres elle fait le traitemment et le test si se test et vrai alros je voudrais sortir completement de la methode (sans quelle traite les autre appel )
exemple
public static void par (ab t,int k)
{
if t.v!=k{
if(t.v<g){par(t.g,k)}
else{par(t.d,k)}
{
traitement
test (si c'est vrai alors fin du travail de cette méthode sans traité les autres apples restant )
}
}}
voici mon problème j'ai une methode recurssive (sur les arbre) une fois elle fait appel a gauche et ou a droit jusqu'a l'arriver a la valeur définie
apres elle fait le traitemment et le test si se test et vrai alros je voudrais sortir completement de la methode (sans quelle traite les autre appel )
exemple
public static void par (ab t,int k)
{
if t.v!=k{
if(t.v<g){par(t.g,k)}
else{par(t.d,k)}
{
traitement
test (si c'est vrai alors fin du travail de cette méthode sans traité les autres apples restant )
}
}}
A voir également:
- Casser la récursivité en java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
2 réponses
il faut que t a fonction récursive retourne une valeur qui dira à la fonction "mère", appelante, qu'il faut partir. Par exemple boolean :
c'est ça que tu voulais ?
public static boolean par (ab t,int k) { if t.v!=k{ boolean continuer; if(t.v<g) { continuer = par(t.g,k); } else { continuer = par(t.d,k); } if (continuer==false) { return false; } { traitement test (si c'est vrai alors fin du travail de cette méthode sans traité les autres apples restant ) si (fin du travail) { return false; } sinon { fin du tratiement; return true; } }}
c'est ça que tu voulais ?
merci de ta réponse
mais mon objectif c'est de stopper net la méthode
en plus il y a pas de fonction mère elle est appelé du main une seul fois et elle elle va se auto-appelé
il mon parler des exception mais il faudra mettre la quelles ?
mais mon objectif c'est de stopper net la méthode
en plus il y a pas de fonction mère elle est appelé du main une seul fois et elle elle va se auto-appelé
il mon parler des exception mais il faudra mettre la quelles ?
quand je parlais de fonction mère je parlais de ceci :
main appelle par (par1 disons)
par appelle un autre par (disons par2)
c'est autre par appelle un autre par (par3)
etc...
Par3 a comme "fonction mère" par2. C'est par2 qui a appelé par3 (même si c'est la même fonction, elles sont bien considérées différemment par le programme, qui les "empile" dans la pile d'exécution des fonctions comme si c'étaient des fonctions différentes.
C'est la manière correcte de sortir d'une récursivité habituellement. Le fait de casser net comme tu dis, c'est un peu bizarre du point de vue conception (rend le code plutôt difficile à comprendre) mais si tu sais ce que tu fais alors ok.
En effet ce sont les exceptions qui permettent cela.
Tu peux concevoir ta propre exception. perso je te conseille de regarder : https://www.youtube.com/watch?v=cPYXto03Xp0&feature=SeriesPlayList&p=4BBB74C7D2A1049C si tu comprends un peu l'anglais. Le prof écrit le cours et les exemples au tableau. il en vaut la peine je pense :)
main appelle par (par1 disons)
par appelle un autre par (disons par2)
c'est autre par appelle un autre par (par3)
etc...
Par3 a comme "fonction mère" par2. C'est par2 qui a appelé par3 (même si c'est la même fonction, elles sont bien considérées différemment par le programme, qui les "empile" dans la pile d'exécution des fonctions comme si c'étaient des fonctions différentes.
C'est la manière correcte de sortir d'une récursivité habituellement. Le fait de casser net comme tu dis, c'est un peu bizarre du point de vue conception (rend le code plutôt difficile à comprendre) mais si tu sais ce que tu fais alors ok.
En effet ce sont les exceptions qui permettent cela.
Tu peux concevoir ta propre exception. perso je te conseille de regarder : https://www.youtube.com/watch?v=cPYXto03Xp0&feature=SeriesPlayList&p=4BBB74C7D2A1049C si tu comprends un peu l'anglais. Le prof écrit le cours et les exemples au tableau. il en vaut la peine je pense :)