python实现的汉诺塔算法示例


Posted in Python onOctober 23, 2019

本文实例讲述了python实现的汉诺塔算法。分享给大家供大家参考,具体如下:

python实现的汉诺塔算法示例

规则:

圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定

  • 在小圆盘上不能放大圆盘
  • 在三根柱子之间一次只能移动一个圆盘。

算法思路:【三阶的移动思路】

python实现的汉诺塔算法示例

python实现:[注意实参和形参]

    用python方法调用,实现输入圆盘数,打印移动的过程

def move(n,a,b,c):
  if n==1:
    print(a,'-->',c)
  else:
    move(n-1,a,c,b)  #将前n-1个盘子从a移动到b上
    move(1,a,b,c)   #将最底下的最后一个盘子从a移动到c上
    move(n-1,b,a,c)  #将b上的n-1个盘子移动到c上
move(3,'A','B','C')

程序执行的结果:

A --> C
A --> B
C --> B
A --> C
B --> A
B --> C
A --> C

程序分析:

涉及到递归函数,理解起来会容易凌乱,我们以3个盘子为例,进行执行步骤分析

(3,A,B,C)       
->move(2,A,C,B)
        ->move(1,A,B,C)   A->C
        ->move(1,A,C,B)   A->B
        ->move(1,C,A,B)   C->B
->move(1,A,B,C)             

A->C
->move(2,B,A,C)
        ->move(1,B,C,A)   B->A
        ->move(1,B,A,C)   B->C
        ->move(1,A,B,C)   A->C

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python smtplib模块发送SSL/TLS安全邮件实例
Apr 08 Python
按日期打印Python的Tornado框架中的日志的方法
May 02 Python
日常整理python执行系统命令的常见方法(全)
Oct 22 Python
python利用拉链法实现字典方法示例
Mar 25 Python
Pycharm学习教程(2) 代码风格
May 02 Python
Python利用turtle库绘制彩虹代码示例
Dec 20 Python
Python常见内置高效率函数用法示例
Jul 31 Python
python实现简易动态时钟
Nov 19 Python
在Python 中同一个类两个函数间变量的调用方法
Jan 31 Python
python安装dlib库报错问题及解决方法
Mar 16 Python
python3检查字典传入函数键是否齐全的实例
Jun 05 Python
python集合能干吗
Jul 19 Python
在pandas中遍历DataFrame行的实现方法
Oct 23 #Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
Oct 23 #Python
Pandas DataFrame中的tuple元素遍历的实现
Oct 23 #Python
10行Python代码计算汽车数量的实现方法
Oct 23 #Python
在OpenCV里使用特征匹配和单映射变换的代码详解
Oct 23 #Python
手把手教你Python yLab的绘制折线图的画法
Oct 23 #Python
Python之Numpy的超实用基础详细教程
Oct 23 #Python
You might like
Cappuccino 卡布其诺咖啡之制作
2021/03/03 冲泡冲煮
浅析php学习的路线图
2013/07/10 PHP
apache中为php 设置虚拟目录
2014/12/17 PHP
php猴子选大王问题解决方法
2015/05/12 PHP
[原创]smarty简单模板变量输出方法
2016/07/09 PHP
JSON两种结构之对象和数组的理解
2016/07/19 PHP
php根据地址获取百度地图经纬度的实例方法
2019/09/03 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
修复IE9&safari 的sort方法
2011/10/21 Javascript
js Date概念详细介绍
2013/11/22 Javascript
node.js中的fs.rmdir方法使用说明
2014/12/16 Javascript
Jquery实现$.fn.extend和$.extend函数
2016/04/14 Javascript
jQuery插件扩展extend的简单实现原理
2016/06/24 Javascript
vue之a-table中实现清空选中的数据
2019/11/07 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
linux 下以二进制的方式安装 nodejs
2020/02/12 NodeJs
Python随手笔记之标准类型内建函数
2015/12/02 Python
Python解析树及树的遍历
2016/02/03 Python
python 中random模块的常用方法总结
2017/07/08 Python
Python WXPY实现微信监控报警功能的代码
2017/10/20 Python
python使用pyqt写带界面工具的示例代码
2017/10/23 Python
python保存网页图片到本地的方法
2018/07/24 Python
用pycharm开发django项目示例代码
2018/10/24 Python
python并发编程多进程之守护进程原理解析
2019/08/20 Python
python如何编写类似nmap的扫描工具
2020/11/06 Python
使用PDF.JS插件在HTML中预览PDF文件的方法
2018/08/29 HTML / CSS
马来西亚网上花店:FlowerAdvisor马来西亚
2020/01/03 全球购物
利用promise及参数解构封装ajax请求的方法
2021/03/24 Javascript
淘宝店铺营销方案
2014/02/13 职场文书
优良学风班申请材料
2014/02/13 职场文书
少儿节目主持串词
2014/04/02 职场文书
安全资料员岗位职责范本
2014/06/28 职场文书
上班迟到检讨书范文300字
2014/11/02 职场文书
聚会通知怎么写
2015/04/23 职场文书
【D4DJ】美少女DJ企划 动画将于明年冬季开播第2季
2022/04/11 日漫
Python  序列化反序列化和异常处理的问题小结
2022/12/24 Python