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 Django(图文)
Nov 04 Python
Ubuntu下创建虚拟独立的Python环境全过程
Feb 10 Python
python merge、concat合并数据集的实例讲解
Apr 12 Python
Python中pip更新和三方插件安装说明
Jul 08 Python
对Python3.x版本print函数左右对齐详解
Dec 22 Python
windows下numpy下载与安装图文教程
Apr 02 Python
django drf框架中的user验证以及JWT拓展的介绍
Aug 12 Python
使用Python实现正态分布、正态分布采样
Nov 20 Python
pytorch三层全连接层实现手写字母识别方式
Jan 14 Python
浅谈python 调用open()打开文件时路径出错的原因
Jun 05 Python
Python使用Selenium模拟浏览器自动操作功能
Sep 08 Python
Django多个app urls配置代码实例
Nov 26 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面向对象概念
2011/11/06 PHP
php自动注册登录验证机制实现代码
2011/12/20 PHP
PHP在线生成二维码(google api)的实现代码详解
2013/06/04 PHP
Laravel使用Caching缓存数据减轻数据库查询压力的方法
2016/03/15 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
JavaScript 获取用户客户端操作系统版本
2009/08/25 Javascript
js光标定位文本框回车表单提交问题的解决方法
2015/05/11 Javascript
浅谈Javascript数据属性与访问器属性
2016/07/26 Javascript
Wireshark基本介绍和学习TCP三次握手
2016/08/15 Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
2016/10/18 Javascript
javascript 注释代码的几种方法总结
2017/01/04 Javascript
vue mint-ui学习笔记之picker的使用
2017/10/11 Javascript
Vue 让元素抖动/摆动起来的实现代码
2018/05/31 Javascript
利用vue.js把静态json绑定bootstrap的table方法
2018/08/28 Javascript
微信小程序全局变量功能与用法详解
2019/01/22 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
2019/03/19 jQuery
在vue中利用v-html按分号将文本换行的例子
2019/11/14 Javascript
react中hook介绍以及使用教程
2020/12/11 Javascript
[03:18]DOTA2亚洲邀请赛小组赛第一日 RECAP赛事回顾
2015/01/30 DOTA
[46:53]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python下os模块强大的重命名方法renames详解
2017/03/07 Python
解决PyCharm中光标变粗的问题
2017/08/05 Python
Python实现图片滑动式验证识别方法
2017/11/09 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
2018/12/04 Python
在PyCharm中批量查找及替换的方法
2019/01/20 Python
Python中的延迟绑定原理详解
2019/10/11 Python
python计算n的阶乘的方法代码
2019/10/25 Python
pytorch 实现在一个优化器中设置多个网络参数的例子
2020/02/20 Python
Python使用pdb调试代码的技巧
2020/05/03 Python
美国知名平价彩妆品牌:e.l.f. Cosmetics
2017/11/20 全球购物
Desigual德国官网:在线购买原创服装
2018/03/27 全球购物
《童趣》教学反思
2014/02/19 职场文书
2014年财政所工作总结
2014/11/22 职场文书
2015年评职称工作总结范文
2015/04/20 职场文书
学术研讨会主持词
2015/07/04 职场文书
mysql使用instr达到in(字符串)的效果
2022/04/03 MySQL