使用python实现递归版汉诺塔示例(汉诺塔递归算法)


Posted in Python onApril 08, 2014

利用python实现的汉诺塔。带有图形演示

from time import sleep
def disp_sym(num, sym):
        print(sym*num, end='')
#recusion
def hanoi(a, b, c, n, tray_num):
 if n == 1:
  move_tray(a, c)
  disp(tray_num)
  sleep(0.7)
 else:
  hanoi(a, c, b, n-1, tray_num)
  move_tray(a, c)
  disp(tray_num)
  sleep(0.7)
  hanoi(b, a, c, n-1, tray_num)
def move_tray(a, b):
 for i in a:
  if i != 0:
   for j in b:
    if j != 0:
     b[b.index(j) - 1] = i
     a[a.index(i)] = 0
     return
   b.append(i)
   b.pop(0)
   a[a.index(i)] = 0
   return
def disp(tray_num):
 global a, b, c
 for i in range(tray_num):
  for j in ['a', 'b', 'c']:
   disp_sym(5, ' ')
   eval('disp_sym(tray_num - ' + j + "[i], ' ')")
   eval('disp_sym(' + j + "[i], '=')")
   disp_sym(1, '|')
   eval('disp_sym(' + j + "[i], '=')")
   eval('disp_sym(tray_num - ' + j + "[i], ' ')")
  print()
 print('---------------------------------------------------------------------------')
tray_num=int(input("Please input the number of trays:"))
tray=[]
for i in range(tray_num):
 tray.append(i + 1)
a=[0]*tray_num
b=a[:]
c=a[:]
a = tray[:]
disp(tray_num)
hanoi(a, b, c, tray_num, tray_num)
Python 相关文章推荐
Python遍历目录的4种方法实例介绍
Apr 13 Python
Java多线程编程中ThreadLocal类的用法及深入
Jun 21 Python
python 实现删除文件或文件夹实例详解
Dec 04 Python
python实现报表自动化详解
Nov 16 Python
Python 查找字符在字符串中的位置实例
May 02 Python
python3处理含有中文的url方法
May 10 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
May 26 Python
在python 中实现运行多条shell命令
Jan 07 Python
Python 实现王者荣耀中的敏感词过滤示例
Jan 21 Python
python实现控制COM口的示例
Jul 03 Python
简单了解python变量的作用域
Jul 30 Python
ipython jupyter notebook中显示图像和数学公式实例
Apr 15 Python
python计算圆周长、面积、球体体积并画出圆
Apr 08 #Python
python实现类似ftp传输文件的网络程序示例
Apr 08 #Python
Python collections模块实例讲解
Apr 07 #Python
python操作xml文件示例
Apr 07 #Python
python生成随机验证码(中文验证码)示例
Apr 03 #Python
python读取html中指定元素生成excle文件示例
Apr 03 #Python
python实现zencart产品数据导入到magento(python导入数据)
Apr 03 #Python
You might like
Zend Framework上传文件重命名的实现方法
2016/11/25 PHP
常用javascript表单验证汇总
2020/07/20 Javascript
基于RequireJS和JQuery的模块化编程——常见问题全面解析
2016/04/14 Javascript
JS判断浏览器是否安装flash插件的简单方法
2016/09/13 Javascript
javascript 判断当前浏览器版本并判断ie版本
2017/02/17 Javascript
从零开始学习Node.js系列教程之设置HTTP头的方法示例
2017/04/13 Javascript
js+html5 canvas实现ps钢笔抠图
2019/04/28 Javascript
原生js实现下拉选项卡
2019/11/27 Javascript
基于javascript处理二进制图片流过程详解
2020/06/08 Javascript
[56:00]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第二场
2018/04/10 DOTA
Python程序语言快速上手教程
2012/07/18 Python
Python正则表达式介绍
2012/08/06 Python
python下载图片实现方法(超简单)
2017/07/21 Python
git进行版本控制心得详谈
2017/12/10 Python
python正则表达式去除两个特殊字符间的内容方法
2018/12/24 Python
python 多线程重启方法
2019/02/18 Python
Python使用sqlalchemy模块连接数据库操作示例
2019/03/13 Python
python命令行参数用法实例分析
2019/06/25 Python
python实现抠图给证件照换背景源码
2019/08/20 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
2020/05/11 Python
英国最受信任的在线眼镜商之一:Fashion Eyewear
2019/10/31 全球购物
英文求职信结束语大全
2013/10/26 职场文书
大学自荐信
2013/12/12 职场文书
法制宣传实施方案
2014/03/13 职场文书
2014年大学生就业规划书
2014/04/04 职场文书
《三个小伙伴》教学反思
2014/04/11 职场文书
安全施工责任书
2014/08/25 职场文书
四风问题查摆材料
2014/08/25 职场文书
环保项目建议书
2014/08/26 职场文书
代办社保委托书范文
2014/10/06 职场文书
小学班主任经验交流材料
2014/12/16 职场文书
社区活动总结
2015/02/04 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
2016年暑期见闻作文
2015/11/25 职场文书
创业计划书之韩国烧烤店
2019/09/19 职场文书
Java内存模型之happens-before概念详解
2021/06/13 Java/Android