Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2543 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  fonction recursive

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

fonction recursive

n°1328425
d_imane
Posté le 19-03-2006 à 20:16:26  profilanswer
 

:jap: Bonjour,
j'ai la fonction recusive ci-dessu, suposons qu'on a un cas qui passe par les etapes 2/3/5/2/3/4, normalement la valeur de retour de la fonction recursive c'est r (de l'etape 4).alors que le programme me retourn NULL . Quelqu'un peux m'expliquer pourquoi? merci.
 

Code :
  1. Noeud* Noeud::place(Noeud *r,vecteur v,int *pos)
  2. {
  3.   if(r->nbEntree==0) ///       === 1 ====
  4.   { 
  5.    pos=0;
  6.            return r;
  7.   }
  8.   for(int j=0;j<r->nbEntree;j++) ///       === 2 ===
  9. {
  10.   if(((r->fils[j]->MBR).VecteurInterRect(v))==0) /// === 3 ===
  11. {
  12. if((r->fils[j]->fils)==NULL) /// === 4 ===
  13. {
  14. *pos=j;
  15. (*r).afficher();
  16. return r;
  17. }
  18. else
  19. place(r->fils[j]->fils,v,pos); /// === 5 ==  
  20. }
  21. }
  22.      return NULL;///=== 6 ===
  23. }


Message édité par d_imane le 19-03-2006 à 20:50:04
mood
Publicité
Posté le 19-03-2006 à 20:16:26  profilanswer
 

n°1328429
KangOl
Profil : pointeur
Posté le 19-03-2006 à 20:19:18  profilanswer
 

balise [code] :o

n°1328432
skelter
Posté le 19-03-2006 à 20:21:41  profilanswer
 

tu devrais aussi enlever ces parantheses inutiles, ca rend le code peu lisible
 
if((((*r).fils[j])->fils)==NULL)
-->
if(r->fils[j]->fils==NULL)

n°1328434
olivthill
Posté le 19-03-2006 à 20:30:17  profilanswer
 

1. Je crois qu'au lieu de

   pos=0;

il faut

   *pos=0;


 
2. Je crois qu'au lieu de

return r;

il faut

return *r;

n°1328447
d_imane
Posté le 19-03-2006 à 20:41:02  profilanswer
 

pour ta premiére remarque olivthill *pos=0, c'est juste tu as raison mais ca change pas le resultat alors que pour la deuxième non, je retourn en faite un une adesse.

n°1328490
Trap D
Posté le 19-03-2006 à 22:09:04  profilanswer
 

Ceci
 
 

Code :
  1. place(r->fils[j]->fils,v,pos);


est anormal puisque tu n'utilises le retour de place, tu as sans doute une erreur ici.


Message édité par Trap D le 19-03-2006 à 22:10:20
n°1328554
d_imane
Posté le 20-03-2006 à 00:15:04  profilanswer
 

oui c'etait ca trap  D, je devais faire

Code :
  1. r=place(r->fils[j]->fils,v,pos);
  2. return r;


merci bcp


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  fonction recursive

 

Sujets relatifs
Executer une fonction d'un script en VBScriptRésultat fonction PHP différente
fonction cryptage et envoie dans mysqlfonction recursive
[Résolu] [PHP] Fonction récursive listage de répertoire[fonction recursive]affichage de contenu d'un dossier en ascii
Pb avec ma fonction récursiveRendre récursive une fonction de listage.
Problème avec un boucle For Each et une fonction recursive[VB] Fonction recursive pour répertoires
Plus de sujets relatifs à : fonction recursive


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR