Hallo.
Das bedeutet also, wenn ich das anwende, um beispielsweise alle Unterverzeichnisse von C: anzuzeigen, das die Anwendung erst zum zweiten Unterverzeichnis des obersten Verzeichnisses (C:) kommt, wenn alle (Unter-)Unterverzeichnisse des ersten Unterverzeichnisses abgearbeitet wurden ?!
Yep.
Wäre dann nicht-rekursiv, wenn erst alle Verzeichnisse der obersten Ebene, dann alle Verzeichnisse des ersten Verzeichnisses des obersten Verzeichnisses, dann alle des zweiten des obersten usw. betrachtet würden ?
Yep.
Welches sind die Vorteile von rekursiver bzw nicht-rekursiver Traversierung?
Der Vorteil der Rekursion liegt darin, dass du alles in einem Durchgang machen kannst, du also jede Stelle eines Verzeichnisses nur einmal durchsuchen musst. Die andere Methode zwingt dich entweder dazu mehrfach anzusetzen oder dir alle Stellen zu merken, and denen du in ein Unterverzeichnis wechseln kannst. Vorteilhaft kann dies sein, wenn die oberste Ebene sehr wenige Verzeichnisse enthält, die Unterverzeichnisse pro Verzeichnis aber von Ebene zu Ebene mehr werden und du dir sicher bist, dass die von dir gesuchte Datei relativ nah am Stammverzeichnis lag.
Und ist das dann nicht auch etwas gefährlich, wenn einem nicht bekannt ist, wie viele Unterverzeichnisse (Ebenen) der Baum hat ? Ich stelle mir mal einen Baum vor, der alle möglichen Züge einer Schachpartie darstellen soll... Ein solches Programm würde ja nie - nie = alles, was über zehn milliarden Jahre dauert ;-) - zu einem Ende kommen. (Folglich könnte ich mir vorstellen, das Schachprogramme eher nicht-rekursiv arbeiten, wenn ich das recht verstanden habe..)
Komplexe Schleifen kombinieren gern beide Möglichkeiten, nutzen integrierte Sicherheitsmechanismen etc. Aber das führt doch ein wenig zu weit. Vielleicht hat ja noch jemand einen guten Buchtipp für dich.
MfG, at