Y
out schrieb:
yasahan schrieb:
ich verstehe nicht, wieso beendet das Program bei der 21. Zeile nicht, es muss ja return; ausgeben und beenden
return beendet die AKTUELLE Funktion und kehrt zurück zur aufrufenden Funktion. Wie oft wurde die print-Funktion aufgerufen? 5x wenn ich das grad richtig sehe. Also kehre ich 4x zurück zur print-Funktion und 1x zurück zur main.
Mir hilft es, wenn ich mir eine Rekursion einfacher vor Augen halte. Ich denke mir eine Rekursion einfach als Gleichung, z.B.
Fakultät(4) = 4 * Fakultät(3)
Der Punkt ist jetzt, mich interessieren die anderen Rekursionaufrufe gar nicht mehr, weil ich mein Problem anhand der Gleichung richtig definiert habe.
Das einzige was mich jetzt noch interessiert, ist eine Abbruchbedingung:
Fakultät(0) = 1
Was ich sagen will, wenn ich die Gleichung und die Abbruchbedingung definiere, ist mein Rekursion komplett. Ich weiß, dass sie stimmt und muss mir im Kopf nicht 100 Funktionaufruf-Schritte durchdenken. Keine Ahnung, ob du verstehst, was ich sagen will? Kann sein, dass ich mich kompliziert ausgedrückt habe.
z.B. wollte ich letztens den Inhalt eines HTML-Tags und alle Inhalte seiner Kinder in einem string haben. Dann mache ich einfach:
Inhalt(Tag) = Inhalt(Kind-Tag) + eigener Inhalt
Abbruchbedingung: Inhalt(Tag) = Leer
Wenn ich mir das nun im Kopf durchspinnen würde, z.B. bei dem Quellcode dieses Threads, würde ich ja blöd werden....
Du musst eben nun dein Problem in eine Gleichung fassen.
Ach jetzt verstehe ich es! Vielen Dank für Ihr Geduld!