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下读取公私钥做加解密实例详解
Mar 29 Python
Python进程间通信Queue实例解析
Jan 25 Python
详解tensorflow训练自己的数据集实现CNN图像分类
Feb 07 Python
python变量赋值方法(可变与不可变)
Jan 12 Python
opencv python统计及绘制直方图的方法
Jan 21 Python
详解Python是如何实现issubclass的
Jul 24 Python
python常见字符串处理函数与用法汇总
Oct 30 Python
python和js交互调用的方法
Jun 23 Python
PyCharm中关于安装第三方包的三个建议
Sep 17 Python
Python通过Schema实现数据验证方式
Nov 12 Python
Python爬取英雄联盟MSI直播间弹幕并生成词云图
Jun 01 Python
Python实现信息轰炸工具(再也不怕说不过别人了)
Jun 11 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
linux命令之调试工具strace的深入分析
2013/06/03 PHP
php+mysqli数据库连接的两种方式
2015/01/28 PHP
PHP数据的提交与过滤基本操作实例详解
2016/11/11 PHP
wordpress自定义标签云与随机获取标签的方法详解
2019/03/22 PHP
JavaScript对象链式操作代码(jquery)
2010/07/04 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
2015/02/23 Javascript
深入解析JavaScript的闭包机制
2015/10/20 Javascript
jquery获取文档高度和窗口高度汇总
2016/01/25 Javascript
谈一谈js中的执行环境及作用域
2016/03/30 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(一)
2016/05/17 Javascript
jQuery实现底部浮动窗口效果
2016/09/07 Javascript
纯JavaScript 实现flappy bird小游戏实例代码
2016/09/27 Javascript
JS利用cookies设置每隔24小时弹出框
2017/04/20 Javascript
关闭Vue计算属性自带的缓存功能方法
2018/03/02 Javascript
深入理解Angularjs 脏值检测
2018/10/12 Javascript
vue实现前台列表数据过滤搜索、分页效果
2019/05/28 Javascript
微信小程序实现上传图片裁剪图片过程解析
2019/08/22 Javascript
vue.js+ElementUI实现进度条提示密码强度效果
2020/01/18 Javascript
Vue-router 报错NavigationDuplicated的解决方法
2020/03/31 Javascript
[01:06:32]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第一局
2016/02/28 DOTA
Python中的zip函数使用示例
2015/01/29 Python
python实现微信跳一跳辅助工具步骤详解
2018/01/04 Python
Pycharm使用之设置代码字体大小和颜色主题的教程
2019/07/12 Python
Python安装selenium包详细过程
2019/07/23 Python
Django文件上传与下载(FileFlid)
2019/10/06 Python
简单了解python调用其他脚本方法实例
2020/03/26 Python
Python 调用C++封装的进一步探索交流
2021/03/04 Python
出国签证在职证明
2014/01/16 职场文书
运动会跳远加油稿
2014/02/20 职场文书
互联网创业计划书写作技巧攻略
2014/03/23 职场文书
网络技术专业求职信
2014/07/13 职场文书
2014年局领导班子自身建设情况汇报
2014/11/21 职场文书
幼儿园科学课教学反思
2016/03/03 职场文书
JVM入门之类加载与字节码技术(类加载与类的加载器)
2021/06/15 Java/Android
基于Python实现射击小游戏的制作
2022/04/06 Python
mysql全面解析json/数组
2022/07/07 MySQL