Hanoi-Varianten rekursiv

El Guapo

Neues Mitglied
Hallo! Ich bereite mich gerade auf eine Java-Prüfung vor und stecke seit Tagen bei Hanoi-Varianten fest. Die Standard-Version habe ich verstanden (siehe Code). Doch finde ich keinen Ansatz für die geforderten Varianten (siehe Aufgabenstellung weiter unten).

Java:
public class Hanoi {
	static int bewegungen=0;
	
	public static void main(String[] args) {		
		System.out.println("Standard Hanoi");
		turm('A', 'C', 'B', 3);	
		System.out.println("Es wurden "+bewegungen+" Bewegungen benoetigt.");		
		}
	
	public static void bewege (char start, char ziel) {
		System.out.println("Setze Scheibe "+start+" auf "+ziel);
		bewegungen++;
	}
	
	public static void turm (char start, char ziel, char ablage, int hoehe) {
		if (hoehe >1)
			turm (start, ablage, ziel, hoehe-1);
		bewege (start, ziel);
		if (hoehe >1)
			turm (ablage, ziel, start, hoehe-1);		
	}
}

Folgende Aufgabenstellung:
--------------------------------------
Es gelten jeweils die Regeln für "Türme von Hanoi" (Aufgabe 22)

3.1. "Hanoi im Uhrzeigersinn": Schreiben Sie eine rekursive Methode, die
eine Zugfolge für "Türme von Hanoi" ausgibt, bei der nur Bewegungen von
Stapel 1 nach Stapel 2, von 2 nach 3 und von 3 nach 1 erlaubt sind.

3.2. "Hanoi in einer Linie": Schreiben Sie eine rekursive Methode, die
eine Zugfolge für "Türme von Hanoi" ausgibt, bei der keine Bewegungen
von Stapel 1 zu Stapel 3 oder umgekehrt erlaubt sind.

(Beide Aufgaben sind aus "Concrete Mathematics" von Graham, Knuth,
Patashnik.)
Es gibt zu 3.1 und 3.2 jeweils eine sehr kurze Loesung.
-------------------------------------------------------


Da die Lösung sehr kurz sein soll gehe ich davon aus, dass ich nur minimale Änderungen vornehmen muss. Allein es fehlt der Ansatz. Vielen Dank für eure Hilfe! Wichtig: Rekursive Lösung ist gefragt.
 
Zuletzt bearbeitet:
Im Uhrzeigersinn (nur 1->2, 2->3, 3->1 erlaubt):
Wie ich das verstehe, muss bei Hoehe 1 immer A -> B, B -> C gesetzt werden. Der erste Zug ist genauso. Aber dann werden immer entweder zwei Scheiben je ein Feld bewegt oder eine Scheibe zwei Felder. Bei Höhe 2 benötigt man 7 Züge, bei Höhe 3 braucht man 21 Züge. An der Umsetzung in Java hapert es leider.
 

Zurück
Oben