Hallo zusammen,
anbei habe ich einen Code der die Züge in dem Spiel "Türme von Hanoi" ausgibt. Eingabe ist die Anzahl der Scheiben, mit denen gespielt wird. Ausgabe soll die Anzahl der Züge sein und nicht was genau in den jeweiligen Zügen passiert (so ist es gerade). Es soll kein bestimmter Ausdruck zum Zählen benutzt werden, sondern rekursiv programmiert werden. Meine Idee wäre eine Variable counter zu initialisieren, welcher ich immer 1 addiere. Blöd nur, dass bei jedem Aufruf der rekursiven Methode die Variable immer wieder initialisiert wird.
Kann mir da jemand einen Denkanstoß geben, wie ich das umschreiben könnte ?
Danke!
anbei habe ich einen Code der die Züge in dem Spiel "Türme von Hanoi" ausgibt. Eingabe ist die Anzahl der Scheiben, mit denen gespielt wird. Ausgabe soll die Anzahl der Züge sein und nicht was genau in den jeweiligen Zügen passiert (so ist es gerade). Es soll kein bestimmter Ausdruck zum Zählen benutzt werden, sondern rekursiv programmiert werden. Meine Idee wäre eine Variable counter zu initialisieren, welcher ich immer 1 addiere. Blöd nur, dass bei jedem Aufruf der rekursiven Methode die Variable immer wieder initialisiert wird.
Kann mir da jemand einen Denkanstoß geben, wie ich das umschreiben könnte ?
Danke!
Java:
import java.util.Scanner;
public class hanoi {
static void hanoiTurm (int n, char x, char y, char z)
{
// Bewegt n Scheiben von x nach y unter Verwendung von z.
if (n==1) {
System.out.println("Scheibe "+n+" von "+x+" nach "+y); }
else {
// bewege alles bis auf letzte Scheibe von x auf
// den Hilfsplatz z unter Verwendung von y:
hanoiTurm(n-1, x, z, y);
// bewege letzte Scheibe von x nach y:
System.out.println("Scheibe "+n+" von "+x+" nach "+y);
// bewege zwischengespeicherten Turm von Hilfsplatz z // nach y unter Verwendung des (jetzt leeren) x:
hanoiTurm(n-1, z, y, x);
}
}
public static void main(String[] args) {
int n;
Scanner read = new Scanner(System.in);
System.out.println("Wie viele Scheiben? ");
n = read.nextInt();
hanoiTurm(n, 'A', 'B', 'C');
// bewege n Scheiben von A nach B unter Verwendung von C
}
}