3 a b c
2 a c b
1 a b c
move a,c
move a,b
1 c a b
move c,b
move a,c
2 b a c
1 b c a
move b,a
move b,c
1 a b c
move a,c注意看这三句话:Hanoi(n-1,a,c,b); //将n-1个盘子从a move 到bmove(a,c); //无论几个盘子,此步是将最大的盘子从a move到cHanoi(n-1,b,a,c); //将n-1个盘子从b move 到c然后递归调用所以n个盘子就应该调用else中的move(a,c)n-1次(因为n==1时调的是if里的move(a,c))move(a,c)一共被调了2的n次幂-1次 |