Java Reference
In-Depth Information
linksUm();
7
linksUm();
8
}
9
10 }
11
12 void main() {
13
hinUndZurueckR();
14 }
Tatsächlich kann während der Ausführung der Prozedur hinUndZurueckR die Prozedur in Zeile 4
ein weiteres Mal aufgerufen werden, was dazu führt, dass mehrere Inkarnationen dieser Prozedur
gleichzeitig existieren. Folglich ist die Prozedur hinUndZurueckR rekursiv.
Die Prozedur hinUndZurueckR ist ein Beispiel für eine direkte Rekursion . Man spricht von direkter
Rekursion, wenn sich eine Funktion selbst erneut aufruft. Dementsprechend bezeichnet man als in-
direkte Rekursion das Phänomen, dass von einer Funktion mehrere Inkarnationen existieren, obwohl
sich diese nicht selber aufruft. Das folgende Programm gibt ein Beispiel für indirekte Rekursion.
void hinUndZurueckIR() {
if (vornFrei()) {
laufe();
} else {
linksUm();
linksUm();
}
}
void laufe() {
vor();
hinUndZurueckIR();
// indirekter rekursiver Aufruf
vor();
}
void main() {
hinUndZurueckIR();
}
Während der Ausführung der Prozedur hinUndZurueckIR , d.h. während der Existenz einer Inkar-
nation von der Prozedur, kann die Prozedur laufe aufgerufen werden, die einen erneuten Aufruf der
Prozedur hinUndZurueckIR , also die Erzeugung einer weiteren Inkarnation der Prozedur, bewirkt.
Übrigens ist das Prinzip der Rekursion nicht auf Funktionen beschränkt. In der Informatik und der
Mathematik wird es auch an vielen anderen Stellen eingesetzt. Wir haben es sogar schon einige Male
genutzt. Schauen Sie sich bspw. einmal die Abbildung 9.3 an. Diese enthält ein Syntaxdiagramm,
das boolesche Ausdrücke rekursiv definiert: Innerhalb des Syntaxdiagramms „boolescher Ausdruck“
tritt nämlich der „boolesche Ausdruck“ selbst wieder als Nicht-Terminalsymbol auf.
Search WWH ::




Custom Search