Bei Rekursion musst Du für eine Weile deinen Verstand ausschalten und dich DOOF stellen.
Dein Beispiel für eine Baumtraversierung geht doch so (völlig stumpfsinnig, ohne Nachdenken):
Sei B ein Baum (B.L=linker Unterbaum, B.R=rechter Unterbaum, B.Root = Wurzel).
"Besuche alle Knoten in Baum B":
1. Besuche alle Knoten in Baum B.L
2. Besuche alle Knoten in Baum B.R
STOP! Nicht drüber nachdenken, sonst bekommt dein Verstand eine Rekursion, und DAS ist ungesund!
Na, ich will vielleicht den Beweis, das ich auch wirklich alle Knoten abgegrast habe.
Also:
"Besuche alle Knoten in Baum B":
1. Besuche alle Knoten in Baum B.L
2. Ausgabe "Hier ist Knoten" B.Root
3. Besuche alle Knoten in Baum B.R
STOP: Bleib DOOF und befolge nur Befehle (das macht der PC doch auch...)
Wir nehmen uns also einen Baum:
((2)-3-(4))-5-((6)-7-(8))
5 ist die Wurzel, links hängt die 3 unter ihr 2 und 4.
rechts von der 5 hängt die 7, unter ihr 6 und 8.
Besuche alle knoten im Baum ((2)-3-(4)) -5- ((6)-7-(8))
1. Besuche alle Knoten im Baum (2) -3- (4)
1.1 Besuche alle Knoten im Baum (2)
1.1.1 Besuche alle Knoten im Baum () fällt aus wegen is nich.
1.1.2 Ausgabe "Hier ist Knoten " 2
1.1.3 Besuche alle Knoten im Baum () fällt aus wegen is nich.
---- Eine Ebene zurück ---
1.2 Ausgabe "Hier ist Knoten" 3
1.3 Besuche alle Knoten im Baum (4)
1.3.1 Besuche alle Knoten im Baum () fällt aus wegen is nich.
1.3.2 Ausgabe "Hier ist Knoten " 4
1.3.3 Besuche alle Knoten im Baum () fällt aus wegen is nich.
---- Eine Ebene zurück ---
---- Eine Ebene zurück ---
2. Ausgabe "Hier ist Knoten" 4
3. Besuche alle Knoten im Baum (6) -7- (8)
3.1 Besuche alle Knoten im Baum (6)
3.1.1 Besuche alle Knoten im Baum () fällt aus wegen is nich.
3.1.2 Ausgabe "Hier ist Knoten " 6
3.1.3 Besuche alle Knoten im Baum () fällt aus wegen is nich.
---- Eine Ebene zurück ---
3.2 Ausgabe "Hier ist Knoten" 7
3.3 Besuche alle Knoten im Baum (8)
3.3.1 Besuche alle Knoten im Baum () fällt aus wegen is nich.
3.3.2 Ausgabe "Hier ist Knoten " 8
3.3.3 Besuche alle Knoten im Baum () fällt aus wegen is nich.
---- Eine Ebene zurück ---
---- Eine Ebene zurück ---
---- Eine Ebene zurück ---
Wow! Fertig! Wie haben wir das gemacht? In dem wir ausnahmsweise bei der Lösung *nicht* nachgedacht haben. Wir haben die Lösung kurz und knapp rekursiv definiert. So wie der Chef, der sagt:"Ich habe Recht, weil ich Recht habe". Und der ist auch DOOF.
Bei der Erklärung sind wir dann engstirnig vorgegangen.
Bei mir hat es mit der Rekursion einige Zeit gedauert, bis es -Plink- machte und ich es gefressen habe. Da mir DOOF sein nicht schwer fällt, komm ich damit ganz gut zurecht. Und man muss seine (iterativen!) Gedanken mal kurz ausschalten, damit man das kapiert. Rekursion ist sozusagen gegen die Natur, weil wir uns sagen, das man etwas nicht über sich selbst definieren kann.
Hilft Dir das?
Check mal die Towers of Hanoi in ...
www.delphi-forum.de/....php?p=249822#249822