汉诺塔递归算法(Python编程)
一、问题描述。
汉诺塔是学习计算机递归算法的经典入门案例,是一个数学难题。其问题为如何将所有圆盘从A移动到C,要求一次只能移动一个盘子,盘子只能在3个标杆(A/B/C)之间移动,更大的盘子不能放在更小的盘子上面。请用Python编写一个汉诺塔的移动函数,采用递归方法解决这个问题,要求输入汉诺塔的层数,输出整个移动流程。
二、问题分析。
如图,假设A上有5层的圆盘。
首先,我们将A上的圆盘分为底层1个与上层4个,将上层4个圆盘视为一个整体移动到B上,B作为中转站。然后把A上最大的圆盘移动到C上。
其次,我们来看B上剩下的4个圆盘,按照以上方法(可以把4个盘子重新放回A上),将其分为底部1个盘子与上方3个盘子,把3个盘子视为整体放到B上,再将A上的1个盘子移动到C上。
以此类推,我们可以找到实际操作中我们要移动的第一个盘子(最小的那个盘子)。
最后一张图可以把C上圆盘当做不存在,视为只有2个圆盘时的移动过程。
三、编写程序。
1、代码示例:
def move(n,A,B,C):if n == 1 :print (A,"->",C)else :move(n-1,A,C,B)move(1,A,B,C)move(n-1,B,A,C)
n=eval(input("请输入递归层数:"))
move(n,'A','B','C')
2、运行结果:
四、总结。
这个问题对我来说难度系数比较高,理解了挺久的。
操作时不是真的将4个圆盘一起移动到B上,因为一次只能移动一个圆盘。将4个圆盘看做一个整体来移动是因为我们要利用计算机来解决这个递归问题。
我们可以把几个盘子视为整体移动后得到的结果想象为经过多个步骤才得到的,而我们现在要寻找的就是这些复杂步骤的起始步骤。
这也就是利用计算机递归算法层层深入找到的,每次重复的操作可以将C上的盘子视为不存在,这样可以更好地理解递归思想。
五、参考资料。
B站上的动画展示:https://www.bilibili.com/video/av38671130/?p=1
参考视频:https://www.bilibili.com/video/av9830115/?spm_id_from=333.788.videocard.1
如有错误,敬请指正。
汉诺塔递归算法(Python编程)相关推荐
- 汉诺塔递归算法 python实现
数据结构复习内容--栈的应用 汉诺塔 def hannuota(n:int,a:str,b:str,c:str):if n==1:print(a,"--->",c)else: ...
- python汉诺塔_汉诺塔递归算法/搬金盘的婆罗门 - Python实现
汉诺塔递归算法/搬金盘的婆罗门 - Python实现 版权声明 本文节选自作者本人的图书<Python编程基础及应用>,高等教育出版社.本文可以在互联网上自由转载,但必须:注明出处(作者: ...
- 汉诺塔递归算法/搬金盘的婆罗门 - Python实现
汉诺塔递归算法/搬金盘的婆罗门 - Python实现 本文引用自作者编写的下述图书; 本文允许以个人学习.教学等目的引用.讲授或转载,但需要注明原作者"海洋饼干叔 叔":本文不允许 ...
- python汉诺塔递归算法流程图_详解汉诺塔Python递归程序
学习递归时,很多小伙伴对汉诺塔的递归算法非常疑惑,不清楚那么复杂的移动过程,为何用四五行代码就给解决了.汉诺塔问题:有三根柱子A,B,C.A柱上有若干碟子,每次移动一块碟子,小的只能叠在大的上面,把所 ...
- 汉诺塔递归算法进阶_进阶python 1递归
汉诺塔递归算法进阶 When something is specified in terms of itself, it is called recursion. The recursion give ...
- 汉诺塔实践python_汉诺塔的python 动画演示
1.简介 古代有一座汉诺塔,塔内有3个座A.B.C,A座上有n个盘子,盘子大小不等,大的在下,小的在上,如图所示.有一个和尚想把这n个盘子从A座移到C座,但每次只能移动一个盘子,并且自移动过程中,3个 ...
- python汉诺塔递归编程_python中的汉诺塔递归算法的具体运算过程是怎样的?
关键点:不要多想,不要像人类一样整体来看,盲人摸象即可. 以最开始提出此猜想的 [传说越南河内某间寺院有三根银棒,上串 64 个金盘] 为例. 三根银棒我们设为A,B,C. 欲将A棒上的64个金盘移动 ...
- python汉诺塔递归算法流程图,python实现汉诺塔递归算法经典案例
Python汉诺塔递归问题 python请用递归算法编程解决汉诺塔问题 在线等 关于python递归函数实现汉诺塔 def move(n,a,b,c): #1 if n==1: #2 print(a, ...
- python汉诺塔递归算法流程图_python实现汉诺塔的图解递归算法
一.起源: 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小 ...
- python汉诺塔递归算法_Python文摘:汉诺塔问题与递归算法
历史传说: 在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针.印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔.不论白天黑夜 ...
最新文章
- 函数调用过程,栈帧的一点理解
- 手写堆模板(指针数组)
- python3 for mac_PyCharm for Mac-PyCharm Mac版下载 V2018.3.2-PC6苹果网
- 电子产品设计流程_指纹锁生产的八大工序流程
- oracle中怎么算奇数,oracle - 如何在oracle中获取奇数列 - SO中文参考 - www.soinside.com...
- Python内置函数any()、map()组合运用案例一则
- 高可用高性能负载均衡软件HAproxy详解指南-第一章(简介、安装)
- 太赞了!智能语音技术年终报告:谢磊教授、王赟博士、罗艺博士…
- matlab移动文件到另一个文件夹里,Matlab将文件分类移动到不同文件夹中
- 海龟交易法则14_掌控心魔
- 按键扫描——74HC164驱动(二)
- NetDevOps网络设备日志分析与环境搭建-EFK(Elasticsearch+Filebeat+Kibana)
- 服务器提权常见方法介绍
- 小程序中实现token过期重新登录再重新请求业务接口
- ANC 调试 Performance
- cocos creator飞机大战总结
- (转)802.1Q标准中TAG字段简单说明
- 职业生涯手记——序章
- 如何 让 Chrome (谷歌)浏览器 自动翻译
- .NET简单的登录邮箱验证
热门文章
- 为flash游戏终极实用提速
- Windows查看所有的端口
- 使用谷歌浏览器下载的图片webp怎么转成jpg格式图片
- Python爬虫 - 02.实现贴吧签到
- 凯利公式计算器安卓_华为MatePad Pro 5G评测:一屏双任务打破安卓平板生态限制...
- day11、3 - 思科模拟器介绍
- animals中文谐音_动物英语单词发音
- 【PMI-PMP®模考三】2022
- dubbo之failed to connect to server /xx.xx.xx.xx:20880 client-side timeout问题解决
- hd Aruba wifi / honor