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制作在地图上模拟瘟疫扩散的Gif图
Mar 31 Python
python中pygame针对游戏窗口的显示方法实例分析(附源码)
Nov 11 Python
Python打造出适合自己的定制化Eclipse IDE
Mar 02 Python
Python数组遍历的简单实现方法小结
Apr 27 Python
django缓存配置的几种方法详解
Jul 16 Python
Python 互换字典的键值对实例
Feb 12 Python
PyQt5 QListWidget选择多项并返回的实例
Jun 17 Python
Python搭建代理IP池实现检测IP的方法
Oct 27 Python
Flask框架请求钩子与request请求对象用法实例分析
Nov 07 Python
使用Python实现将多表分批次从数据库导出到Excel
May 15 Python
python cv2.resize函数high和width注意事项说明
Jul 05 Python
Python为何不支持switch语句原理详解
Oct 21 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的FTP学习(二)[转自奥索]
2006/10/09 PHP
php str_pad 函数用法简介
2009/07/11 PHP
PHP中利用substr_replace将指定两位置之间的字符替换为*号
2011/01/27 PHP
PHP中单引号与双引号的区别分析
2014/08/19 PHP
PHP微信分享开发详解
2017/01/14 PHP
Thinkphp 5.0实现微信企业付款到零钱
2018/09/30 PHP
Laravel使用scout集成elasticsearch做全文搜索的实现方法
2018/11/30 PHP
让JavaScript拥有类似Lambda表达式编程能力的方法
2010/09/12 Javascript
jQuery学习笔记之控制页面实现代码
2012/02/27 Javascript
jquery链式操作的正确使用方法
2014/01/06 Javascript
JavaScript中for-in遍历方式示例介绍
2014/02/11 Javascript
javascript实现详细时间提醒信息效果的方法
2015/03/11 Javascript
JQuery插件ajaxfileupload.js异步上传文件实例
2015/05/19 Javascript
基于jQuery实现音乐播放试听列表
2016/04/14 Javascript
jQuery插件扩展测试实例
2016/06/21 Javascript
Vue.extend构造器的详解
2017/07/17 Javascript
原生JS实现瀑布流插件
2018/02/06 Javascript
javascript回调函数详解
2018/02/06 Javascript
node中间层实现文件上传功能
2018/06/11 Javascript
解决vue2 在mounted函数无法获取prop中的变量问题
2018/11/15 Javascript
使用异步组件优化Vue应用程序的性能
2019/04/28 Javascript
利用原生JS实现data方法示例代码
2019/05/28 Javascript
vue通信方式EventBus的实现代码详解
2019/06/10 Javascript
python字符串编码识别模块chardet简单应用
2015/06/15 Python
python相似模块用例
2016/03/04 Python
Python复制Word内容并使用格式设字体与大小实例代码
2018/01/22 Python
Python设计模式之适配器模式原理与用法详解
2019/01/15 Python
Django之PopUp的具体实现方法
2019/08/31 Python
Python模块的定义,模块的导入,__name__用法实例分析
2020/01/07 Python
tensorflow:指定gpu 限制使用量百分比,设置最小使用量的实现
2020/02/06 Python
python print 格式化输出,动态指定长度的实现
2020/04/12 Python
Python requests接口测试实现代码
2020/09/08 Python
开放系统互连参考模型
2016/06/29 面试题
高中生学习生活的自我评价
2013/10/09 职场文书
称象教学反思
2014/02/03 职场文书
省文明单位申报材料
2014/05/08 职场文书