Java程序:汉诺塔
来源:互联网 发布:财务预算软件 编辑:程序博客网 时间:2024/06/01 12:06
为了弄这个递归,简直快被逼疯。。。
package com.cskaoyan.sax;import java.util.Scanner;/*汉诺塔: * A柱子上从上倒下按从小到大的顺序放着n个圆盘,最终要将这些圆盘以同样的顺序移动到C柱子上 *如果只有1个圆盘,可直接从A移动到C上,只需移动1次 *否则,如果有那个圆盘 *先将A上的n-1个盘子借助C柱子移动到B,再将A上剩下的一个圆盘直接移动到C * 最后将B上的n-1个圆盘借助A移动到C * */public class Hanoi {public static void main(String[] args) {// TODO Auto-generated method stubSystem.out.println("请输入需要移动的盘子的个数n:");Scanner sc = new Scanner(System.in); int n = sc.nextInt();hanoi(n,'A','B','C');}//步骤计数器public static int step = 1;//最终的结果是将所有的圆盘都移动到C柱//先把剩下的n-1个圆盘看成一个,需要将他们从A柱借用柱C移动到B柱上,然后再将第n个圆盘直接移动到C柱上//接下来,是以n-1圆盘所在的B柱开始,执行同上一步相同的操作,即借助C,将n-2个圆盘移动到到A住上//其实可看作 (A) (B)// 圆盘数 开始柱 借用柱 终点柱//方法:移动方法public static void hanoi(int n,char a,char b,char c){if(n == 1){move(n,a,c);}else{hanoi(n-1,a,c,b);//先将n-1个圆盘从A柱借用C柱移动到Bmove(n,a,c); //接下来,执行n-1个圆盘的汉诺塔hanoi(n-1,b,a,c);//再将n-1个圆盘从B柱借用A柱移动到C柱}}//方法:打印移动顺序public static void move(int n,char a,char b){ System.out.println("第"+step+"步,盘子"+n+"从"+a+"塔移到"+b+"塔"); step++; } }
0 0
- 汉诺塔Java程序
- Java程序:汉诺塔
- java 汉诺塔的演示程序
- 用JAVA编写汉诺塔程序
- java 程序 生子程序
- jAVA程序
- java程序
- JAVA程序
- java 程序
- java程序..
- JAVA程序
- java程序
- Java程序
- java程序
- Java程序
- Java程序
- java程序!
- java程序!
- SMP,NUMA,MPP
- [深度学习] 增加样本——弹性变换算法实现
- linux驱动开发中的互斥机制与irq下半部处理机制
- 143. Reorder List**
- ASP.NET Aries 入门开发教程3:开发一个列表页面及操控查询区_0
- Java程序:汉诺塔
- 笔记:对话框太大,超出屏幕范围,导致找不到“确定”按钮,如何解决?
- NoSql介绍与分布式Mongo
- 最小二乘网格优化
- 通过 Grub 来引导启动 UBUNTU
- Zurmo(十二)之官网的zurmozoo例子
- 人脸识别算法调研
- 服务端使用c++实现websocket协议解析及通信
- mlpy机器学习库的介绍