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 Web服务器Tornado使用小结
May 06 Python
基于python(urlparse)模板的使用方法总结
Oct 13 Python
Python实现PS滤镜功能之波浪特效示例
Jan 26 Python
详解如何在python中读写和存储matlab的数据文件(*.mat)
Feb 24 Python
Python iter()函数用法实例分析
Mar 17 Python
解决Pycharm下面出现No R interpreter defined的问题
Oct 29 Python
对python中的argv和argc使用详解
Dec 15 Python
Python实现投影法分割图像示例(一)
Jan 17 Python
使用Puppeteer爬取微信文章的实现
Feb 11 Python
Python3标准库之functools管理函数的工具详解
Feb 27 Python
如何用tempfile库创建python进程中的临时文件
Jan 28 Python
Python Django获取URL中的数据详解
Nov 01 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 无限级缓存的类的扩展
2009/03/16 PHP
PHP 调试工具Debug Tools
2011/04/30 PHP
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2012/01/16 PHP
php输出指定时间以前时间格式的方法
2015/03/21 PHP
微信利用PHP创建自定义菜单的方法
2016/08/01 PHP
PHP实现的获取文件mimes类型工具类示例
2018/04/08 PHP
laravel5实现微信第三方登录功能
2018/12/06 PHP
浅谈laravel5.5 belongsToMany自身的正确用法
2019/10/17 PHP
js实现弹窗插件功能实例代码分享
2013/12/12 Javascript
js实现照片墙功能实例
2015/02/05 Javascript
js实现点击获取验证码倒计时效果
2021/01/28 Javascript
jQuery Easyui实现左右布局
2016/01/26 Javascript
js代码延迟一定时间后执行一个函数的实例
2017/02/15 Javascript
浅谈Node.js轻量级Web框架Express4.x使用指南
2017/05/03 Javascript
手机注册发送验证码倒计时的简单实例
2017/11/15 Javascript
JavaScript基础心法 深浅拷贝(浅拷贝和深拷贝)
2018/03/05 Javascript
nodejs高大上的部署方式(PM2)
2018/09/11 NodeJs
vue动画打包后失效问题的解决方法
2018/09/18 Javascript
JS使用cookie保存用户登录信息操作示例
2019/05/30 Javascript
[01:00:04]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第二局
2016/02/26 DOTA
Python实现windows下模拟按键和鼠标点击的方法
2015/03/13 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
小结Python的反射机制
2020/09/28 Python
pip 20.3 新版本发布!即将抛弃 Python 2.x(推荐)
2020/12/16 Python
查找适用于matplotlib的中文字体名称与实际文件名对应关系的方法
2021/01/05 Python
Muziker英国:中欧最大的音乐家商店
2020/02/05 全球购物
SAZAC的动物连体衣和动物睡衣:Kigurumi Shop
2020/03/14 全球购物
装饰资料员岗位职责
2013/12/30 职场文书
创业计划书的内容步骤和要领
2014/01/04 职场文书
函授生自我鉴定
2014/03/25 职场文书
大学生求职计划书
2014/04/30 职场文书
优秀中职教师事迹材料
2014/08/26 职场文书
七年级英语教学反思
2016/02/15 职场文书
MySQL 如何设计统计数据表
2021/06/15 MySQL
排查并解决Oracle sysaux表空间异常增长
2022/04/20 Oracle
django项目、vue项目部署云服务器的详细过程
2022/07/23 Servers