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实现的Google IP 可用性检测脚本
Apr 23 Python
详解Python的Django框架中manage命令的使用与扩展
Apr 11 Python
python线程、进程和协程详解
Jul 19 Python
python实现简单遗传算法
Mar 19 Python
快速解决PyCharm无法引用matplotlib的问题
May 24 Python
python正则表达式之对号入座篇
Jul 24 Python
python通过ffmgep从视频中抽帧的方法
Dec 05 Python
解决Python列表字符不区分大小写的问题
Dec 19 Python
Python获取浏览器窗口句柄过程解析
Jul 25 Python
python实现数学模型(插值、拟合和微分方程)
Nov 13 Python
python基于selenium爬取斗鱼弹幕
Feb 20 Python
django使用多个数据库的方法实例
Mar 04 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/08/06 PHP
joomla jce editor 解决上传中文名文件失败问题
2013/06/09 PHP
解析PHP中empty is_null和isset的测试
2013/06/29 PHP
CodeIgniter CLI模式简介
2014/06/17 PHP
php事件驱动化设计详解
2016/11/10 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
showModelessDialog()使用详解
2006/09/21 Javascript
escape、encodeURI、encodeURIComponent等方法的区别比较
2006/12/27 Javascript
javascript学习基础笔记之DOM对象操作
2011/11/03 Javascript
JS对象与JSON格式数据相互转换
2012/02/20 Javascript
connect中间件session、cookie的使用方法分享
2014/06/17 Javascript
jQuery和AngularJS的区别浅析
2015/01/29 Javascript
jQuery中noconflict函数的实现原理分解
2015/02/03 Javascript
javascript编写实用的省市选择器
2015/02/12 Javascript
jQuery插件imgAreaSelect基础讲解
2017/05/26 jQuery
JavaScript原型继承和原型链原理详解
2020/02/04 Javascript
详解在Python的Django框架中创建模板库的方法
2015/07/20 Python
python实现教务管理系统
2018/03/12 Python
使用Python设计一个代码统计工具
2018/04/04 Python
Ubuntu下使用python读取doc和docx文档的内容方法
2018/05/08 Python
解决PyCharm的Python.exe已经停止工作的问题
2018/11/29 Python
快速排序的四种python实现(推荐)
2019/04/03 Python
Django项目中使用JWT的实现代码
2019/11/04 Python
pytorch三层全连接层实现手写字母识别方式
2020/01/14 Python
Pytorch 使用 nii数据做输入数据的操作
2020/05/26 Python
使用TensorBoard进行超参数优化的实现
2020/07/06 Python
Python爬取某平台短视频的方法
2021/02/08 Python
耐克中国官方商城:Nike中国
2018/10/18 全球购物
有影响力的品牌之家:Our Social Collective
2019/06/08 全球购物
历史专业毕业生的自我鉴定
2013/11/15 职场文书
数控专业毕业生求职信
2014/06/12 职场文书
机关作风整顿个人整改措施思想汇报
2014/09/29 职场文书
《家》读后感:万惜拯救,冷暖自知
2019/09/25 职场文书
4种非常实用的python内置数据结构
2021/04/28 Python
python基于机器学习预测股票交易信号
2021/05/25 Python
Python实现byte转integer
2021/06/03 Python