Posez votre question Signaler

Casser la récursivité en java

moh-23 26Messages postés 15 novembre 2006Date d'inscription 14 septembre 2010Dernière intervention - Dernière réponse le 13 déc. 2009 à 19:31
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 )
}
}}
Lire la suite 

Casser la récursivité en java »

3 réponses
Réponse
+0
moins plus
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 ?
Ajouter un commentaire
Réponse
+0
moins plus
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 ?
Pacorabanix- 13 déc. 2009 à 19:31
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 : http://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 :)
Ajouter un commentaire
Ce document intitulé « casser la récursivité en java » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?