Java Reference
In-Depth Information
void rechtsUm() {
kehrt();
linksUm();
}
void kehrt() {
linksUm();
linksUm();
}
17.8.2 Beispielprogramm 2
Aufgabe:
Der Hamster steht - wie in den Landschaften in Abbildung 17.4 ersichtlich - direkt vor einem
regelmäßigen Berg unbekannter Höhe. Der Hamster bekommt die Aufgabe, den Berg zu übersteigen,
d.h. auf der einen Seite hinauf und auf der anderen Seite wieder herunter zu klettern. Der Hamster
hat keine Körner im Maul und im Territorium befinden sich auch keine Körner.
Abbildung 17.4: Typische Hamster-Landschaften zu Beispielprogramm 2
Lösungsidee:
Falls der Hamster auf dem Gipfel steht, ist das Problem unmittelbar gelöst. Ansonsten erklimmt der
Hamster eine Stufe, wodurch er die Komplexität der Situation verringert. Auf die komplexitätsredu-
zierte Situation wendet er rekursiv den Algorithmus an. Nach dessen Abarbeitung befindet er sich
damit auf der entsprechenden Ebene auf der anderen Seite des Berges. Er muss also nur noch eine
Stufe wieder hinuntergehen und hat damit das Problem gelöst.
Lösung:
void main() {
uebersteigeBerg();
}
void uebersteigeBerg() {
if (!gipfelErreicht()) {
klettereStufeHoch();
uebersteigeBerg(); // rekursiver Aufruf
klettereStufeHinunter();
 
Search WWH ::




Custom Search