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-->c2.初始化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);
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容猜你喜欢
AI推送时光机java 实现汉诺塔详解及实现代码
后端开发2023-05-31
java 汉诺塔详解及实现代码
后端开发2023-05-31
java怎么实现汉诺塔
后端开发2023-10-23
C语言实现汉诺塔(图文详解)
后端开发2024-04-02
Java与C++分别用递归实现汉诺塔详解
后端开发2024-04-02
Java 实现一个汉诺塔实战练习
后端开发2024-04-02
Python3实现汉诺塔问题
后端开发2023-01-31
C语言递归思想实现汉诺塔详解
后端开发2024-04-02
java递归实现汉诺塔步骤介绍
后端开发2024-04-02
Java递归来实现汉诺塔游戏,注释详细
后端开发2024-04-02
C语言怎么实现汉诺塔
后端开发2023-06-28
python实现汉诺塔方法汇总
后端开发2022-06-04
递归——汉诺塔问题(python实现)
后端开发2023-01-30
PHP怎么实现汉诺塔算法
后端开发2023-06-20
java基于递归算法实现汉诺塔问题实例
后端开发2023-05-31
如何用Java递归来实现汉诺塔游戏
后端开发2023-06-21
怎么使用Python实现汉诺塔问题
后端开发2023-07-06
如何使用Python实现汉诺塔问题
后端开发2023-05-15
使用Python实现汉诺塔问题示例
后端开发2023-05-17
C语言用递归函数实现汉诺塔
后端开发2024-04-02
咦!没有更多了?去看看其它编程学习网 内容吧