Rekursion
-
Hallo,
es geht um einen Binären Baum und ich habe folgende Funktion zum Freigeben des allozierten Speichers gegeben:void release(node *n) { if(n) { if(n->no) release(n->no); if(n->yes) release(n->yes); if(n->question) free(n->question); free(n); } }
Die Funktion arbeitet ja rekursiv und wenn ich das erste Mal die Funktion mit dem Startnode aufrufe und diese einen Zeiger auf den no-Node enthält, wird nochmal die release()-Funktion aufgerufen. Wird dann die Ausführung des ersten Aufrufs der release()-Funktion "eingefroren" und erst wieder fortgesetzt, wenn der zweite (bzw. n-Aufruf) vorbei ist (also wird nochmal der gleiche Baum mit Aufrufen der Funktion aufgebaut, der sich dann vom untersten Node bis zum ersten Node aufruft?) ?
Ich hoffe, ich habe das verständlich ausgedrückt
Mfg Jaob
-
Unabhängig von diesem Beispiel: Ein Funktionsaufruf kehrt erst zurück, wenn er komplett fertig ist. Erst danach geht es weiter. Bei einem rekursiven Aufruf kann das eine Weile dauern.
P.S.: Das heißt, wenn ich deine Frage richtig verstanden habe (sie ist ein bisschen wirr): Ja.
-
Ok, danke. Dann habe ich das richtige gedacht (wurde in dem Buch leider nicht erklärt ...).