java 实现汉诺塔详解及实现代码

汉诺塔问题:有三根柱子A,B,C,其中A上面有n个圆盘,从上至下圆盘逐渐增大,每次只能移动一个圆盘,并且规定大的圆盘不能叠放在小的圆盘上面,现在想要把A上面的n个圆盘全部都移动到C上面,输出移动的总步数以及移动的过程
分析:
//先求出移动的总步数 1,假设g(n)表示n个圆盘时的移动总的步数,当n=1时,g(1)=1; 2.现在可以把g(n)进行细分为三步: 1>先将n-1个圆盘从A通过C移动到B上面,相当于将n-1个圆盘从A移动到C,因此需要g(n-1)步; 2>然后将剩下的最大的圆盘从A移动到C,需要1步; 3>最后再将n-1个圆盘从B通过A移动到C上面,相当于将n-1个圆盘从A移动到C,因此也需要g(n-1)步; 因此可以得出递归关系式:g(n) = 2*g(n-1)+1; //现在我们在来求出移动的过程 1.假设hm(m,a,b,c)表示将m个圆盘从a通过b移动到c的过程,假设mv(a,c)输出一次a到c的过程,即print a-->c 2.初始化hm,当m=1时,hm(1,a,b,c)=mv(a,c); 2.可以把hm(m,a,b,c)进行细分为三步: 1>先将n-1个圆盘从A通过C移动到B,此时b和c进行互换,也就是 hm(m-1,a,c,b); 2>然后将剩下的最大的圆盘从A移动到C,也就是hm(1,a,b,c); 3>最后将n-1个圆盘从B通过A移动到C,此时b和a进行交换,也就是 hm(m-1,b,a,c); 最终得到过程的递归关系式:hm(m,a,b,c) = hm(m-1,a,c,b)+1+hm(m-1,b,a,c);
实现代码:
public class test{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int n = in.nextInt();
test t = new test();
//获取总的步数
System.out.println("需要移动的总步数为:" +t.getSum(n));
//获取移动的过程
t.hm(n,'a','b','c');
}
//获取总步数
public int getSum(int n){
if(n == 1)
return 1;
return 2 * getSum(n-1) +1 ;
}
//获取移动的过程
public void hm(int m,char a,char b,char c){
if(m == 1)
move(a,c);
hm(m-1,a,c,b);
move(a,c);
hm(m-1,b,a,c);
}
//输出一次移动的过程
public void move(char a,char c){
System.out.print(a + "-->" + c + " ");
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# java
# 汉诺塔
# 实现汉诺塔的实例
# java求解汉诺塔问题示例
# Java使用递归法解决汉诺塔问题的代码示例
# java 汉诺塔详解及实现代码
# 手把手带你用java搞定汉诺塔
# Java用递归方法解决汉诺塔问题详解
# Java 细致图解带你分析汉诺塔
# JAVA数据结构之汉诺塔代码实例
# Java的函数方法详解(含汉诺塔问题)
# 求出
# 递归
# 先将
# 三步
# 放在
# 汉诺
# 希望能
# 后将
# 谢谢大家
# 再将
# 数为
# 上至
# 三根
# gt
# 总步数
# strong
# pre
# xml
# brush
相关文章:
如何快速启动建站代理加盟业务?
零基础网站服务器架设实战:轻量应用与域名解析配置指南
SQL查询语句优化的实用方法总结
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
建站OpenVZ教程与优化策略:配置指南与性能提升
宝塔建站无法访问?如何排查配置与端口问题?
如何快速选择适合个人网站的云服务器配置?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
如何基于云服务器快速搭建网站及云盘系统?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
表情包在线制作网站免费,表情包怎么弄?
南平网站制作公司,2025年南平市事业单位报名时间?
装修招标网站设计制作流程,装修招标流程?
如何在IIS中新建站点并配置端口与IP地址?
定制建站如何定义?其核心优势是什么?
如何在阿里云服务器自主搭建网站?
如何挑选优质建站一级代理提升网站排名?
建站上市公司网站建设方案与SEO优化服务定制指南
清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?
如何配置IIS站点权限与局域网访问?
建站主机与服务器功能差异如何区分?
简单实现Android文件上传
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
制作网站的过程怎么写,用凡科建站如何制作自己的网站?
香港服务器网站推广:SEO优化与外贸独立站搭建策略
长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?
高端建站三要素:定制模板、企业官网与响应式设计优化
如何通过虚拟主机快速搭建个人网站?
公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?
如何在Windows 2008云服务器安全搭建网站?
制作门户网站的参考文献在哪,小说网站怎么建立?
建站之星如何实现五合一智能建站与营销推广?
网站制作培训多少钱一个月,网站优化seo培训课程有哪些?
官网建站费用明细查询_企业建站套餐价格及收费标准指南
公司门户网站制作流程,华为官网怎么做?
音乐网站服务器如何优化API响应速度?
大学网站设计制作软件有哪些,如何将网站制作成自己app?
香港服务器部署网站为何提示未备案?
公众号网站制作网页,微信公众号怎么制作?
广州美橙建站如何快速搭建多端合一网站?
如何通过PHP快速构建高效问答网站功能?
高防服务器租用如何选择配置与防御等级?
网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?
如何在云主机快速搭建网站站点?
如何快速上传建站程序避免常见错误?
如何在企业微信快速生成手机电脑官网?
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
盐城做公司网站,江苏电子版退休证办理流程?
*请认真填写需求信息,我们会在24小时内与您取得联系。