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);
}
}
}
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);
}
}
}
这还不能理解?
问题描述:三个柱子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个盘
}
移动完毕