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、结果如下
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)