Rekursion
-
void rek(int x) { if(x<1) return; cout<<x; rek(x-1); cout<<" Nummer "; }Ich wollte eigentlich dass er die Zahl und dann Nummer ausgibt.
Stattdessen gibt er alle Nummer aus und dann x mal das Wort NummerMeiner Ansicht nach sind Rekursionen nicht durchschaubar.
-
Warum undurchschaubar? Folge dem Pfad doch einfach mal von Hand und mach, was der Computer machen soll.. Dann siehst du, dass das Verhalten ganz logisch und normal ist..
Wenn du Zahl und Nummer ausgeben willst, dann musst du das halt vor dem rekursiven Aufruf machen:
void rek(int x) { if(x<1) return; cout<<x; cout<<" Nummer "; rek(x-1); }Warum benutzt du den Debugger nicht?
-
Sobald x ausgegeben wird, wird die Funktion rek mit x-1 ja erstmal aufgerufen.
Dort drinnen, wird x wieder ausgegeben usw. ... sobald eine Funktion fertig durchlaufen ist, wird erst dein Nummer ausgegeben.
Die Lösung wäre einfach: Nur die Zeile cout<<" Nummer "; nach etwas nach oben verschieben
-
void preorder (knoten *k) { if (k == NULL) return; cout<<k->wert; //1.Rekursion if (k->links != NULL) preorder (k->links); //2.Rekursion if (k->rechts != NULL) preorder (k->rechts); }hmm dann müßte ja hier von der Wurzel abwärts immer der linke Knoten ausgegeben
werden , da die 2.Rekursion erst nach dem obigen return ausgeführt wird ?
-
Genau. Im übrigen sind die if's da überlfüssig.
-
drakon schrieb:
Genau. Im übrigen sind die if's da überlfüssig.
Ja, aber nur die letzten beiden.
-
mmmmmmm schrieb:
drakon schrieb:
Genau. Im übrigen sind die if's da überlfüssig.
Ja, aber nur die letzten beiden.
Tschuldigung. Ja nur die beiden meinte ich natürlich.