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   -
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 )
}
}}
A voir également:

2 réponses

Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
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 :

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 ?
0
moh-23 Messages postés 28 Date d'inscription   Statut Membre Dernière intervention  
 
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 ?
0
Pacorabanix Messages postés 3248 Date d'inscription   Statut Membre Dernière intervention   663
 
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 :)
0