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 相关文章推荐
haskell实现多线程服务器实例代码
Nov 26 Python
简单介绍Python中的RSS处理
Apr 13 Python
Python创建模块及模块导入的方法
May 27 Python
python实现字符串连接的三种方法及其效率、适用场景详解
Jan 13 Python
python正则表达式re之compile函数解析
Oct 25 Python
Django使用Mysql数据库已经存在的数据表方法
May 27 Python
详解python单元测试框架unittest
Jul 02 Python
python sorted函数的小练习及解答
Sep 18 Python
python与mysql数据库交互的实现
Jan 06 Python
django项目中新增app的2种实现方法
Apr 01 Python
Python descriptor(描述符)的实现
Nov 15 Python
Python读取pdf表格写入excel的方法
Jan 22 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
php adodb分页实现代码
2009/03/19 PHP
php class中self,parent,this的区别以及实例介绍
2013/04/24 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
2014/11/08 PHP
PHP命名空间定义与用法实例分析
2019/08/14 PHP
JAVASCRIPT车架号识别/验证函数代码 汽车车架号验证程序
2012/01/08 Javascript
使用requestAnimationFrame实现js动画性能好
2015/08/06 Javascript
js实现div模拟模态对话框展现URL内容
2016/05/27 Javascript
JS跨域交互(jQuery+php)之jsonp使用心得
2016/07/01 Javascript
利用JQuery直接调用asp.net后台的简单方法
2016/10/27 Javascript
如何在AngularJs中调用第三方插件库
2017/05/21 Javascript
vue动态删除从数据库倒入列表的某一条方法
2018/09/29 Javascript
JavaScript 预解析的4种实现方法解析
2019/09/03 Javascript
原生js+css调节音量滑块
2020/01/15 Javascript
vue实现编辑器键盘抬起时内容跟随光标距顶位置向上滚动效果
2020/05/28 Javascript
Python实现批量修改文件名实例
2015/07/08 Python
Python实现将数据库一键导出为Excel表格的实例
2016/12/30 Python
python调用自定义函数的实例操作
2019/06/26 Python
python查找重复图片并删除(图片去重)
2019/07/16 Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
2019/08/18 Python
pytorch中的embedding词向量的使用方法
2019/08/18 Python
Python 根据数据模板创建shapefile的实现
2019/11/26 Python
python中的 zip函数详解及用法举例
2020/02/16 Python
Python random库使用方法及异常处理方案
2020/03/02 Python
对Keras中predict()方法和predict_classes()方法的区别说明
2020/06/09 Python
python 邮件检测工具mmpi的使用
2021/01/04 Python
一款CSS3实现多功能下拉菜单(带分享按)的教程
2014/11/05 HTML / CSS
吃透移动端 1px的具体用法
2019/12/16 HTML / CSS
建筑公司文秘岗位职责
2013/11/29 职场文书
经典洗发水广告词
2014/03/13 职场文书
夫妻忠诚协议书范本
2014/11/17 职场文书
2015年法务工作总结范文
2015/05/23 职场文书
2015中学政教处工作总结
2015/07/22 职场文书
Python数据分析入门之教你怎么搭建环境
2021/05/13 Python
前端实现滑动按钮AJAX与后端交互的示例代码
2022/02/24 Javascript
Python软件包安装的三种常见方法
2022/07/07 Python
Go gorilla securecookie库的安装使用详解
2022/08/14 Golang