//分为两步
//第一步:把n-1的圆盘从A到B借助C
// 把第n个圆盘从A到C
//第二步:把n-1个圆盘从B到C借助A
//要求n个圆盘的问题,需要先求解 n-1个圆盘的问题(符合迭代的要求)
public class Test42 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
hanNo hanNo = new hanNo();
System.out.println("输入圆盘数");
int n=input.nextInt();
hanNo.hanoi(n,'A','B','C');
}
}
class hanNo {
int m=1;
//移动方法
public void move(char N, char M) {
System.out.println("移动 "+(m++)+"次" + " 从 " + N + " ->移到-> " + M);
}
//递归实现汉诺塔的函数
public void hanoi(int n, char A, char B, char C) {
if (n == 1)//圆盘只有一个时,只需将其从A塔移到C塔
move(A, C);//将编b号为1的圆盘从A移到C
else {//否则
hanoi(n - 1, A, C, B);//递归,把A塔上编号1~n-1的圆盘移到B上,以C为辅助塔
move(A, C);//把A塔上编号为n的圆盘移到C上
hanoi(n - 1, B, A, C);//递归,把B塔上编号1~n-1的圆盘移到C上,以A为辅助塔
}
}
}