Hallo
ich bin gerade am Java lernen und ich versuche gerade zu verstehen was bei diesem Beispiel passiert.
Es geht um rekursion aber ich kann nicht ganz nachvollziehen was es bringt, wenn man die Parameter bei dieser Methode vertauscht:
[Java]
private int nrOfDisks; //defines problem instance
private String headline;
private String comment;
//----------constructors
TowersOfHanoi(int n) {
//requires n > 0
nrOfDisks = n;
headline = "TowersOfHanoi: " + nrOfDisks + " disks";
comment = "(towers: source=1, target=3, helper=2)";
}
//----------methods
//interface solution method
public void solveIt() {
System.out.println(headline);
System.out.println(comment);
System.out.println();
solveIt(nrOfDisks, 1,3,2);
}
//internal solution method
private void solveIt(int n, int source, int target, int helper) {
if (n == 1)
move(source, target);
else {
solveIt(n-1,source,helper,target); // Hier
move(source, target);
solveIt(n-1,helper,target,source); // und hier ist mir nicht ganz klar was passiert
}
}
//describe solution process
private void move(int from, int to) {
System.out.println(from + " -> " + to);
}
}
[/Java]
Vielleicht gibts irgendwo eine erklärung dazu ?
Falls ihr noch Infos braucht um mir besser helfen zu können sagt es mir einfach.
lg
ich bin gerade am Java lernen und ich versuche gerade zu verstehen was bei diesem Beispiel passiert.
Es geht um rekursion aber ich kann nicht ganz nachvollziehen was es bringt, wenn man die Parameter bei dieser Methode vertauscht:
[Java]
private int nrOfDisks; //defines problem instance
private String headline;
private String comment;
//----------constructors
TowersOfHanoi(int n) {
//requires n > 0
nrOfDisks = n;
headline = "TowersOfHanoi: " + nrOfDisks + " disks";
comment = "(towers: source=1, target=3, helper=2)";
}
//----------methods
//interface solution method
public void solveIt() {
System.out.println(headline);
System.out.println(comment);
System.out.println();
solveIt(nrOfDisks, 1,3,2);
}
//internal solution method
private void solveIt(int n, int source, int target, int helper) {
if (n == 1)
move(source, target);
else {
solveIt(n-1,source,helper,target); // Hier
move(source, target);
solveIt(n-1,helper,target,source); // und hier ist mir nicht ganz klar was passiert
}
}
//describe solution process
private void move(int from, int to) {
System.out.println(from + " -> " + to);
}
}
[/Java]
Vielleicht gibts irgendwo eine erklärung dazu ?
Falls ihr noch Infos braucht um mir besser helfen zu können sagt es mir einfach.
lg
Zuletzt bearbeitet: