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 socket多线程通讯实例分析(聊天室)
Apr 06 Python
解析Mac OS下部署Pyhton的Django框架项目的过程
May 03 Python
Python读取sqlite数据库文件的方法分析
Aug 07 Python
matplotlib savefig 保存图片大小的实例
May 24 Python
Python解压 rar、zip、tar文件的方法
Nov 19 Python
flask利用flask-wtf验证上传的文件的方法
Jan 17 Python
Python面向对象中类(class)的简单理解与用法分析
Feb 21 Python
Django实现图片上传功能步骤解析
Apr 22 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
Jun 12 Python
keras 简单 lstm实例(基于one-hot编码)
Jul 02 Python
Django权限控制的使用
Jan 07 Python
python库sklearn常用操作
Aug 23 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
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
2007/09/02 PHP
PHP多个版本的分析解释
2011/07/21 PHP
php强大的时间转换函数strtotime
2016/02/18 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
(JS实现)MapBar中坐标的加密和解密的脚本
2007/05/16 Javascript
Extjs单独定义各组件的实例代码
2013/06/25 Javascript
jquery 层次选择器siblings与nextAll的区别介绍
2013/08/02 Javascript
JSON传递bool类型数据的处理方式介绍
2013/09/18 Javascript
document.execCommand()的用法小结
2014/01/08 Javascript
jquery仿搜索自动联想功能代码
2014/05/23 Javascript
node.js中的http.createServer方法使用说明
2014/12/14 Javascript
jquery手风琴特效插件
2015/02/04 Javascript
在Javascript中处理字符串之big()方法的使用
2015/06/08 Javascript
jquery实现Ctrl+Enter提交表单的方法
2015/07/21 Javascript
js实现接收表单的值并将值拼在表单action后面的方法
2015/11/23 Javascript
jquery单击事件和双击事件冲突解决方案
2016/03/02 Javascript
javascript解决小数的加减乘除精度丢失的方案
2016/05/31 Javascript
Vue插件写、用详解(附demo)
2017/03/20 Javascript
JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)
2017/06/19 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
2019/06/07 Javascript
JS实现图片幻灯片效果代码实例
2020/05/21 Javascript
python实现验证码识别功能
2018/06/07 Python
python实现AES和RSA加解密的方法
2019/03/28 Python
python自动化测试之如何解析excel文件
2019/06/27 Python
python 输出列表元素实例(以空格/逗号为分隔符)
2019/12/25 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
keras做CNN的训练误差loss的下降操作
2020/06/22 Python
用CSS3打造HTML5的Logo(实现代码)
2016/06/16 HTML / CSS
美国眼镜网:GlassesUSA
2017/09/07 全球购物
美国在线艺术商店:HandmadePiece
2020/11/06 全球购物
资产经营总监岗位职责
2013/12/04 职场文书
《悯农》教学反思
2014/04/28 职场文书
骨干教师个人总结
2015/02/11 职场文书
先进个人主要事迹怎么写
2015/11/04 职场文书
《杜鹃的婚约》OP主题曲「凸凹」无字幕影像公开
2022/04/08 日漫
Java8利用Stream对列表进行去除重复的方法详解
2022/04/14 Java/Android