import java.io.*;
public class Hanoi {
public static void main(String args[]) throws IOException {
int n;
BufferedReader buf;
buf = new BufferedReader(new InputStreamReader(System.in));
System.out.print("请输入盘数:");
n = Integer.parseInt(buf.readLine()); 
Hanoi hanoi = new Hanoi();
hanoi.move(n, 'A', 'B', 'C');
}
public void move(int n, char a, char b, char c) {
if(n == 1)
System.out.println("盘 " + n + " 由 " + a + " 移至 " + c);
else {
move(n - 1, a, c, b);
System.out.println("盘 " + n + " 由 " + a + " 移至 " + c);
move(n - 1, b, a, c);
}
}

解决方案 »

  1.   

    A    B    C如果有三个盘,要求,从A移动到C,一次只能移动一个盘,并且要保证小盘要在大盘上面。
    这还不能理解?
      

  2.   

    汉诺塔移动思路
    问题描述:三个柱子A,B,C,A柱上从上向下排着n个盘子,B,C柱为空,把A住所有盘按规则移动到C盘
    function(n, A, B, C) {
        function(n-1, A, C, B);//调用自身,将A柱子上面的n-1个盘子借助C柱移动到B柱,结果是B柱上有A盘的n-1个,A盘上剩下一个,C柱为空
        move A to C;//将A柱上的最后一个盘移动到C柱,结果是A柱变空C柱上有一个盘B柱上有n-1个盘
        function(n-1, B, A, C);//调用自身,将B柱子上的n-1个盘借助A柱移动到C柱,结果是A柱空B柱空C柱有n个盘
    }
    移动完毕