Fonction recursive

infodaoudi Messages postés 117 Date d'inscription vendredi 10 février 2006 Statut Membre Dernière intervention 30 mars 2012 - 19 mars 2006 à 13:05
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 - 20 mars 2006 à 14:05
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.

Noeud* Noeud::place(Noeud *r,vecteur v,int *pos)
{
if((*r).nbEntree==0) /// === 1 ====
{
pos=0;
return r;
}

for(int j=0;j<(*r).nbEntree;j++) /// === 2 ===
{
if(((((*r).fils[j])->MBR).VecteurInterRect(v))==0) /// === 3 ===
{
if((((*r).fils[j])->fils)==NULL) /// === 4 ===
{

*pos=j;
(*r).afficher();
return r;
}
else
place(((*r).fils[j])->fils,v,pos); /// === 5 == }
}
return NULL;///6
}

2 réponses

Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
20 mars 2006 à 13:57
ta verifie que ta fonction suit bien le chemin que tu veu?
fais des printf de 1/2/3/4/5/6 pour voir si c le bon chemin.

sinon, pour une meilleur lisibilité; remplace tes (*i).fils etc. par i->fils
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
20 mars 2006 à 14:05
Ouais attention avec tout ces pointeurs. Pour ce qui est du return 0, ya surment une valeur nulle quelque part qui ne devrais pas etre la alors fait comme dit Guillemouze et teste aussi avec printf la valeur de toute les variables.

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
Rejoignez-nous