import java.util.Scanner;
public class HanNuoTa{
public static void main(String[] args){
Scanner S = new Scanner(System.in);
int n = S.nextInt();
Tower tower = new Tower();
tower.move(n,'A','B','C');
}
}
class Tower{
//num 表示要移动的个数,a,b,c分别表示A塔,B塔,C塔
public void move(int num,char a,char b,char c){
//如果只有一个盘 num = 1
if(num == 1){
System.out.println(a + "->" + c);
}
else{
//若有多个盘,可以看成两个,最下面和上面的所有盘(num-1)
//(1)先移动上面所有的盘到b,借助c
move(num - 1,a,c,b);
//(2)把最下面的这个盘,移动到c
System.out.println(a + "->" + c);
//(3)再把b塔的所有盘移动到c,借助a
move(num - 1,b,a,c);
}
}
}
该代码示例展示了如何使用Java编程解决汉诺塔问题。通过Scanner获取输入的盘数,然后调用Tower类的move方法,该方法采用递归策略将盘子从A塔移动到C塔,借助B塔。递归过程包括移动顶部的num-1个盘至辅助塔,移动最底部的盘至目标塔,最后将辅助塔上的盘子借助起始塔移动到目标塔。
1220





