1、图解如下
2、汉诺塔规则:
- 编程实现将n个盘子从A移动到C,盘子编号从1到n
- 每次只能移动一个盘子
- 大盘子只能放在小盘子下面
3、思路
4、代码如下
public class Han {
public static void main(String[] args) {
hanoiTwoer(3,'A','B','C');
}
public static void hanoiTwoer(int nDisks,char A,char B,char C){
if(nDisks==1){
//一步到位
move(nDisks,A,C);
return;
}
//此时nDisks>1
//核心步骤1:先将n-1个盘子从A挪到B,C作为辅助
hanoiTwoer(nDisks-1,A,C,B);
//核心步骤2:此时最大的盘子在A上,C为空,n-1个盘子都在B上
move(nDisks,A,C);
//核心步骤3:将n-1个盘子从B挪到C上,A作为辅助
hanoiTwoer(nDisks-1,B,A,C);
}
//将编号为nDisks的盘子从souce->dist
public static void move(int nDisks, char sourceTower, char distTower) {
System.out.println("编号为"+nDisks+"的盘子从"+sourceTower+"->"+distTower);
}
}
5、结果如下