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创建只读属性对象的方法(ReadOnlyObject)
Feb 10 Python
python应用程序在windows下不出现cmd窗口的办法
May 29 Python
Python使用Beautiful Soup包编写爬虫时的一些关键点
Jan 20 Python
python dict.get()和dict['key']的区别详解
Jun 30 Python
python实现杨辉三角思路
Jul 14 Python
python之pandas用法大全
Mar 13 Python
python实现京东秒杀功能
Jul 30 Python
python绘制散点图并标记序号的方法
Dec 11 Python
Python 实现文件打包、上传与校验的方法
Feb 13 Python
实例详解Matlab 与 Python 的区别
Apr 26 Python
Python字典的概念及常见应用实例详解
Oct 30 Python
django rest framework使用django-filter用法
Jul 15 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/11/24 PHP
php封装好的人民币数值转中文大写类
2015/12/20 PHP
CI框架中类的自动加载问题分析
2016/11/21 PHP
PHP通过GD库实现验证码功能示例
2019/02/23 PHP
PHP whois查询类定义与用法示例
2019/04/03 PHP
让js弹出窗口居前显示的实现方法
2013/07/10 Javascript
ES6新特性二:Iterator(遍历器)和for-of循环详解
2017/04/20 Javascript
Vue下的国际化处理方法
2017/12/18 Javascript
node简单实现一个更改头像功能的示例
2017/12/29 Javascript
修改npm全局安装模式的路径方法
2018/05/15 Javascript
vue实现城市列表选择功能
2018/07/16 Javascript
Vue 页面状态保持页面间数据传输的一种方法(推荐)
2018/11/01 Javascript
[53:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第三场 6.2
2018/06/03 DOTA
[38:42]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第二场 11.05
2020/11/05 DOTA
Python中字典的基础知识归纳小结
2015/08/19 Python
Python实现列表转换成字典数据结构的方法
2016/03/11 Python
python实现机器学习之多元线性回归
2018/09/06 Python
python实现一个简单的ping工具方法
2019/01/31 Python
Python with标签使用方法解析
2020/01/17 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
2020/04/14 Python
浅谈keras2 predict和fit_generator的坑
2020/06/17 Python
使用CSS3来匹配横屏竖屏的简单方法
2015/08/04 HTML / CSS
HTML5 Canvas的性能提高技巧经验分享
2013/07/02 HTML / CSS
Mio Skincare法国官网:身体紧致及孕期身体护理
2018/04/04 全球购物
保荐人的岗位职责
2013/11/19 职场文书
法制报告会主持词
2014/04/02 职场文书
《泉水》教学反思
2014/04/11 职场文书
医院搬迁方案
2014/06/14 职场文书
捐款仪式主持词
2015/07/04 职场文书
中小学教师继续教育心得体会
2016/01/19 职场文书
初中语文教学反思范文
2016/03/03 职场文书
祝福语集锦:送给毕业同学祝福语
2019/11/21 职场文书
JavaScript使用canvas绘制坐标和线
2021/04/28 Javascript
详解如何使用Node.js实现热重载页面
2021/05/06 Javascript
制作能在nginx和IIS中使用的ssl证书
2021/06/21 Servers
SpringBoot 整合mongoDB并自定义连接池的示例代码
2022/02/28 MongoDB