public class Hanoi {
/**
* @param args
*/
public static void main(String[] args) {
int num = 2;
System.out
.println("Problem\nHanoi: From \'a\' To \'b\' with \'c\'...\nAnswer");
HanoiOne(num, 'a', 'b', 'c');
System.out.println("Answer");
HanoiTwo(num, 'a', 'b', 'c');
}
private static void HanoiTwo(int n, char a, char b, char c) {
if (n > 0) {
HanoiOne(n - 1, a, c, b);
move(a, b);
HanoiOne(n - 1, c, b, a);
}
}
private static void HanoiOne(int n, char a, char b, char c) {
if (n == 1) {
move(a, b);
} else {
HanoiOne(n - 1, a, c, b);
move(a, b);
HanoiOne(n - 1, c, b, a);
}
}
private static void move(char a, char b) {
System.out.println(a + " --> " + b);
}
}
/*
*Console:
Problem
Hanoi: From 'a' To 'b' with 'c'...
Answer
a --> c
a --> b
c --> b
Answer
a --> c
a --> b
c --> b
*/
《Hanoi 塔问题的小小改进》
最新推荐文章于 2019-04-07 23:19:29 发布