使用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中模拟enum枚举类型的5种方法分享
Nov 22 Python
python将图片文件转换成base64编码的方法
Mar 14 Python
Python实现获取照片拍摄日期并重命名的方法
Sep 30 Python
Python中sort和sorted函数代码解析
Jan 25 Python
python读取文本中的坐标方法
Oct 14 Python
python利用ffmpeg进行录制屏幕的方法
Jan 10 Python
python实现桌面壁纸切换功能
Jan 21 Python
python通过http下载文件的方法详解
Jul 26 Python
python创建与遍历List二维列表的方法
Aug 16 Python
python库skimage给灰度图像染色的方法示例
Apr 27 Python
Python爬虫使用bs4方法实现数据解析
Aug 25 Python
python实现高效的遗传算法
Apr 07 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
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
字母顺序颠倒而单词顺序不变的php代码
2010/08/08 PHP
PHP Global定义全局变量使用说明
2013/08/15 PHP
thinkphp实现面包屑导航(当前位置)例子分享
2014/05/10 PHP
浅析ThinkPHP的模板输出功能
2014/07/01 PHP
php中base64_decode与base64_encode加密解密函数实例
2014/11/24 PHP
php微信支付之APP支付方法
2015/03/04 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
2016/02/26 PHP
php实现生成验证码实例分享
2016/04/10 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
Laravel推荐使用的十个辅助函数
2019/05/10 PHP
基于jQuery的简单的列表导航菜单
2011/03/02 Javascript
如何在基于vue-cli的项目自定义打包环境
2018/11/10 Javascript
vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
2019/06/04 Javascript
layui实现下拉复选功能的例子(包括数据的回显与上传)
2019/09/24 Javascript
vue调用语音播放的方法
2019/09/27 Javascript
浅谈vue获得后台数据无法显示到table上面的坑
2020/08/13 Javascript
Python中类的定义、继承及使用对象实例详解
2015/04/30 Python
详解在Python程序中使用Cookie的教程
2015/04/30 Python
Python抓取框架 Scrapy的架构
2016/08/12 Python
python3.6 实现AES加密的示例(pyCryptodome)
2018/01/10 Python
python字符串的方法与操作大全
2018/01/30 Python
Python实现多级目录压缩与解压文件的方法
2018/09/01 Python
python 制作自定义包并安装到系统目录的方法
2018/10/27 Python
Django框架封装外部函数示例
2019/05/28 Python
关于Flask项目无法使用公网IP访问的解决方式
2019/11/19 Python
pandas分组聚合详解
2020/04/10 Python
CSS3 @font-face属性使用指南
2014/12/12 HTML / CSS
CSS3中各种颜色属性的使用教程
2016/05/17 HTML / CSS
利用CSS3把图片变成灰色模式的实例代码
2016/09/06 HTML / CSS
机电专业毕业生求职信
2013/10/27 职场文书
大专生自我评价
2014/01/28 职场文书
集团公司党的群众路线教育实践活动工作总结
2014/03/03 职场文书
2014教师个人自我评价范文
2014/09/13 职场文书
教师节联欢会主持词
2015/07/04 职场文书
详解MySQL数据库千万级数据查询和存储
2021/05/18 MySQL