- //1个 A->C 1=2^1-1次
- //2个 A->B A->C 3=2^2-1次
- //3个 A->C A->B C->B A->C B->A B->C A->C 7=2^3-1次
- //pos1-起始位置,pos2-中转位置,pos3-目的位置
- public static void hanoi(int n,char pos1,char pos2,char pos3) {
- if (n == 1) {
- move(pos1, pos3);
- return;
- }
- //pos1-起始位置,pos3-中转位置,pos2-目的位置
- hanoi(n-1, pos1, pos3, pos2);
- move(pos1, pos3);
- hanoi(n-1, pos2, pos1, pos3);
- }
- public static void move(char pos1, char pos2) {
- System.out.print(pos1 + "->" +pos2 + " ");
- }
- public static void main(String[] args) {
- hanoi(3 ,'A', 'B', 'C');
- }
