Java Reference
In-Depth Information
17.2.1 Inkarnation
Wird während der Ausführung eines Programms eine Funktion aufgerufen, dann spricht man auch
davon, dass eine Inkarnation dieser Funktion erzeugt wird. Die Inkarnation wird wieder zerstört,
wenn die Funktion vollständig abgearbeitet worden ist. Schauen Sie sich dazu folgendes Programm
an:
void main() {
sammle();
laufeUndSammle();
}
void laufeUndSammle() {
while (vornFrei()) {
vor();
sammle();
}
}
void sammle() {
while (kornDa()) {
nimm();
}
}
Beim Aufruf dieses Programms wird zunächst einmal eine Inkarnation der main-Prozedur erzeugt.
In der main-Prozedur führt der Aufruf der Prozedur sammle zur Erzeugung einer Inkarnation dieser
Prozedur. Nach der Abarbeitung der sammle-Prozedur wird diese Inkarnation wieder zerstört. An-
schließend wird durch den Aufruf der Prozedur laufeUndSammle eine Inkarnation dieser Prozedur
erzeugt. Während der Abarbeitung der while-Schleife innerhalb der Prozedur wird jedes Mal erneut
eine Inkarnation der sammle-Prozedur erzeugt und zerstört. Hat der Hamster eine Wand erreicht,
endet die laufeUndSammle-Prozedur, d.h. die Inkarnation dieser Prozedur wird zerstört. Damit ist
aber das gesamte Programm beendet, sodass auch die Inkarnation der main-Prozedur zerstört werden
kann.
17.2.2 Rekursion
Nun kann der Begriff der rekursiven Funktion exakt definiert werden. Eine Funktion ist rekursiv defi-
niert, wenn zu einem Zeitpunkt während der Programmausführung zwei oder mehrere Inkarnationen
dieser Funktion existieren (können).
Schauen wir uns einmal die Prozedur hinUndZurueckR an:
1 void hinUndZurueckR() {
2
if (vornFrei()) {
vor();
3
hinUndZurueckR();
// rekursiver Aufruf
4
vor();
5
} else {
6
Search WWH ::




Custom Search