Methoden Methode Parameter vertauschen?

Loddakwin

Aktives Mitglied
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
 
Zuletzt bearbeitet:
Moin,

... kann nicht ganz nachvollziehen was es bringt, wenn man die Parameter bei dieser Methode vertauscht:

[Java]
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
}
}
[/Java]
was macht denn "move" ??

Gruß Klaus
 

Zurück
Oben