- 论坛徽章:
- 0
|
好像觉得还蛮有意思的。
package hanoi;
public class HanoiTest {
public HanoiTest(int n) {
// hanoi(n, 1, 2, 3);
hanoi(n, 1, 3);
}
void hanoi(int n, int start, int help, int end) {
if (n == 1) {
move(start, end);
return;
} else {
hanoi(n - 1, start, end, help);
move(start, end);
hanoi(n - 1, help, start, end);
}
}
void hanoi(int n, int start, int end) {
if (n == 1) {
move(start, end);
} else {
if (start == 1 && end == 2) {
hanoi(n - 1, 1, 3);
move(1, 2);
hanoi(n - 1, 3, 2);
} else if (start == 1 && end == 3) {
hanoi(n - 1, 1, 2);
move(1, 3);
hanoi(n - 1, 2, 3);
} else if (start == 2 && end == 1) {
hanoi(n - 1, 2, 3);
move(2, 1);
hanoi(n - 1, 3, 1);
} else if (start == 2 && end == 3) {
hanoi(n - 1, 2, 1);
move(2, 3);
hanoi(n - 1, 1, 3);
} else if (start == 3 && end == 1) {
hanoi(n - 1, 3, 2);
move(3, 1);
hanoi(n - 1, 2, 1);
} else if (start == 3 && end == 2) {
hanoi(n - 1, 3, 1);
move(3, 2);
hanoi(n - 1, 1, 2);
}
}
}
void move(int start, int end) {
System.out.println(start + "--->" + end);
}
public static void main(String[] args) {
new HanoiTest(5);
}
}
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/105041/showart_2109565.html |
|