Hallo,
Ich habe die folgende Aufgabe:
Das Spiel „Türme von Hanoi“ besteht aus drei Stäben „Start“, „Mitte“ und „Ziel“, auf die mehrere gelochte Scheiben gelegt werden, alle verschieden groß. Zu Beginn liegen alle Scheiben auf „Start“, der Größe nach geordnet, mit der größten Scheibe unten und der kleinsten oben. Ziel des Spiels ist es, den kompletten Scheiben-Stapel von „Start“ nach „Ziel“ zu versetzen. Bei jedem Zug darf die oberste Scheibe eines beliebigen Stabes auf einen der bei den anderen Stäbe gelegt werden, vorausgesetzt, dort liegt nicht schon eine kleinere Scheibe. Folglich sind zu jedem Zeitpunkt des Spieles die Scheiben auf jedem Feld der Größe nach geordnet.
Laden Sie sich die Datei Hanoi.java herunter und implementieren Sie die rekursive Methode solve(). Als Parameter wird die Anzahl n der Scheiben, die zu Beginn des Spieles auf Stab A liegen, übergeben, sowie die Bezeichnungen der drei Stäbe „Start“, „Mitte“ und „Ziel“ als Zei- chenkette. Die Rückgabe soll ebenfalls als Zeichenkette erfolgen, die alle durchgeführten Züge beinhaltet. Jeder einzelne Zug soll durch Leerzeichen getrennt im Format ”Start->Ziel” ange- geben werden. Die Lösung für n=3, start=”A”, mid=”B” und final=”C” wäre beispielsweise dieZeichenkette”A->C A->B C->B A->C B->A B->C A->C”.
So, die Sache ist die: Ich habe die verlangte Methode nun fertig programmiert, nur krieg ich es nicht hin, dass das Ergebnis als String returned wird... Hoffe mir kann jemand helfen
Ich habe die folgende Aufgabe:
Das Spiel „Türme von Hanoi“ besteht aus drei Stäben „Start“, „Mitte“ und „Ziel“, auf die mehrere gelochte Scheiben gelegt werden, alle verschieden groß. Zu Beginn liegen alle Scheiben auf „Start“, der Größe nach geordnet, mit der größten Scheibe unten und der kleinsten oben. Ziel des Spiels ist es, den kompletten Scheiben-Stapel von „Start“ nach „Ziel“ zu versetzen. Bei jedem Zug darf die oberste Scheibe eines beliebigen Stabes auf einen der bei den anderen Stäbe gelegt werden, vorausgesetzt, dort liegt nicht schon eine kleinere Scheibe. Folglich sind zu jedem Zeitpunkt des Spieles die Scheiben auf jedem Feld der Größe nach geordnet.
Laden Sie sich die Datei Hanoi.java herunter und implementieren Sie die rekursive Methode solve(). Als Parameter wird die Anzahl n der Scheiben, die zu Beginn des Spieles auf Stab A liegen, übergeben, sowie die Bezeichnungen der drei Stäbe „Start“, „Mitte“ und „Ziel“ als Zei- chenkette. Die Rückgabe soll ebenfalls als Zeichenkette erfolgen, die alle durchgeführten Züge beinhaltet. Jeder einzelne Zug soll durch Leerzeichen getrennt im Format ”Start->Ziel” ange- geben werden. Die Lösung für n=3, start=”A”, mid=”B” und final=”C” wäre beispielsweise dieZeichenkette”A->C A->B C->B A->C B->A B->C A->C”.
So, die Sache ist die: Ich habe die verlangte Methode nun fertig programmiert, nur krieg ich es nicht hin, dass das Ergebnis als String returned wird... Hoffe mir kann jemand helfen
Java:
public static String solve(int n, String start, String mid, String end) {
// Don't delete!! Tests will fail otherwise
// Pass object r to other function calls of solve (e.g. for recursion). Do not create other instances of object r
// Function solve(...) must be recursive, don't implement other recursive helper functions
//r.check();
// TODO
String erg = null;
if (n == 1){
System.out.println("Lege die oberste Scheibe von " +
"Turm " + start + " auf Turm " + end + ".");
return erg + (start + "->" + end);
}
else {
solve(n-1, start, end, mid);
solve(1, start, mid, end);
solve(n-1, mid, start, end);
}
return null;
}
Zuletzt bearbeitet von einem Moderator: