使用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自动化开发学习之三级菜单制作
Jul 14 Python
[原创]pip和pygal的安装实例教程
Dec 07 Python
python把数组中的数字每行打印3个并保存在文档中的方法
Jul 17 Python
python将字符串以utf-8格式保存在txt文件中的方法
Oct 30 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
Aug 07 Python
解决jupyter notebook import error但是命令提示符import正常的问题
Apr 15 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
May 15 Python
python 实现分组求和与分组累加求和代码
May 18 Python
用python实现前向分词最大匹配算法的示例代码
Aug 06 Python
用Python实现Newton插值法
Apr 17 Python
python通配符之glob模块的使用详解
Apr 24 Python
Flask response响应的具体使用
Jul 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
先进的自动咖啡技术,真的可以取代咖啡师吗?
2021/03/06 冲泡冲煮
跨浏览器PHP下载文件名中的中文乱码问题解决方法
2015/03/05 PHP
iOS10推送通知开发教程
2016/09/19 PHP
php新建文件的方法实例
2019/09/26 PHP
js生成缩略图后上传并利用canvas重绘
2014/05/15 Javascript
jQuery.extend 函数及用法详细
2015/09/06 Javascript
javascript作用域链(Scope Chain)用法实例解析
2015/11/30 Javascript
深入浅析javascript中的作用域(推荐)
2016/07/19 Javascript
新入门node.js必须要知道的概念(必看篇)
2016/08/10 Javascript
JavaScript实现替换字符串中最后一个字符的方法
2017/03/07 Javascript
详解angular中通过$location获取路径(参数)的写法
2017/03/21 Javascript
video.js 实现视频只能后退不能快进的思路详解
2018/08/09 Javascript
解决使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js问题
2018/08/30 Javascript
微信小程序中weui用法解析
2019/10/21 Javascript
[47:26]完美世界DOTA2联赛 LBZS vs Forest 第二场 11.07
2020/11/09 DOTA
python编写暴力破解FTP密码小工具
2014/11/19 Python
Python中的深拷贝和浅拷贝详解
2015/06/03 Python
python使用matplotlib绘图时图例显示问题的解决
2017/04/27 Python
在django中使用自定义标签实现分页功能
2017/07/04 Python
Python使用matplotlib简单绘图示例
2018/02/01 Python
numpy.delete删除一列或多列的方法
2018/04/03 Python
在pandas中一次性删除dataframe的多个列方法
2018/04/10 Python
PyCharm鼠标右键不显示Run unittest的解决方法
2018/11/30 Python
详解Appium+Python之生成html测试报告
2019/01/04 Python
如何基于windows实现python定时爬虫
2020/05/01 Python
python小程序之4名牌手洗牌发牌问题解析
2020/05/15 Python
Python是什么 Python的用处
2020/05/26 Python
欧舒丹澳洲版:L’OCCITANE
2017/07/17 全球购物
五一活动标语
2014/06/30 职场文书
绿色小区申报材料
2014/08/22 职场文书
慰问信格式
2015/02/14 职场文书
2015教师年度考核评语
2015/03/25 职场文书
干货:我将这样书写我的演讲稿!
2019/05/09 职场文书
golang实现一个简单的websocket聊天室功能
2021/10/05 Golang
python代码实现扫码关注公众号登录的实战
2021/11/01 Python
Python 中的 copy()和deepcopy()
2021/11/07 Python