PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Rekursion ???



24-03-2001, 17:03
Hallo. Ich versuche gerade Rekursion zu verstehen:

void test(int a)
{
if(a>0)
{
printf(" davor \n");
test(a-1);
printf(" dahinter \n");
}
printf(" ende \n");
}

int main()
{
test(1);
}


Warum gibt er (gcc 2.95.2)
" davor ende dahinter ende "
aus, und nicht:
" davor dahinter ende "
oder:
" davor dahinter ende ende "
???

24-03-2001, 17:17
Ist alles vollkommen korrekt.

Als erstes wird test mit a=1 aufgerufen.
Also schriebt er "davor".
Und ruft test mit a=0 auf
Da a=0 ist schreibt er nur "ende"
und beendet diesen Aufruf von test.
Wieder im ersten Aufruf von test wird
"dahinter" ausgeben und dann "ende"

Vielleicht hilft dir ja fogende Version (mit oder ohne else) weiter.

void test(int a)
{
if(a>0) {
printf(" davor(%d) \n",a);
test(a-1);
printf(" dahinter(%d) \n", a);
}
/* else */
printf(" ende(%d) \n", a);
}

int main()
{
test(1);
}

24-03-2001, 17:35
Verstehe.
Du scheinst dich wirklich überall auszukennen. Kompliment.
Schlage dich hiermit zum Senior-Poster vor http://www.linuxforen.de/ubb/smile.gif

Danke nochmal.