Я пытаюсь решить проблему Ханойской башни; Я написал этот код:
public class TowersOfHanoi {
public static void main(String[] args) {
move(5, 1, 3);
}
public static void move(int disks, int from, int to) {
if (disks > 0) {
int other = 6 - from - to; // sum of index 1+2+3=6
System.out.println("Move disk from peg " + from + " to " + to);
move(disks - 1, from, other);
move(disks - 1, other, to);
}
}
}
но результат неверный. Решение в моей книге:
public class TowersOfHanoi {
public static void main(String[] args) {
move(5, 1, 3);
}
public static void move(int disks, int from, int to) {
if (disks > 0) {
int other = 6 - from - to; // sum of index 1+2+3=6
move(disks - 1, from, other);
System.out.println("Move disk from peg " + from + " to " + to);
move(disks - 1, other, to);
}
}
}
почему это? Я не могу понять ПОРЯДОК этих выражений:
- первый запуск
System.out.println()
- тогда он запускается
move(disks - 1, from, other)
- теперь он снова запускается
System.out.println()
или move(disks - 1, other, to)
?
и КОГДА ПЕРЕЗАПУСТИТЬ код блока? Thanx.