使用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局域网ip扫描示例分享
Apr 03 Python
Python读取图片属性信息的实现方法
Sep 11 Python
python操作excel的包(openpyxl、xlsxwriter)
Jun 11 Python
python远程连接服务器MySQL数据库
Jul 02 Python
使用Python编写Prometheus监控的方法
Oct 15 Python
解决Python中list里的中文输出到html模板里的问题
Dec 17 Python
Django使用unittest模块进行单元测试过程解析
Aug 02 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
Aug 02 Python
pytorch模型预测结果与ndarray互转方式
Jan 15 Python
Python通过VGG16模型实现图像风格转换操作详解
Jan 16 Python
Python selenium页面加载慢超时的解决方案
Mar 18 Python
win10从零安装配置pytorch全过程图文详解
May 08 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
PHP用SAX解析XML的实现代码与问题分析
2011/08/22 PHP
PHP获取数组长度或某个值出现次数的方法
2015/02/11 PHP
PHP实现批量上传单个文件
2015/12/29 PHP
PHP使用Mysqli类库实现完美分页效果的方法
2016/04/07 PHP
php遍历解析xml字符串的方法
2016/05/05 PHP
PHP微信开发之微信录音临时转永久存储
2018/01/26 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
2019/10/18 PHP
PHP ob缓存以及ob函数原理实例解析
2020/11/13 PHP
网页的标准,IMG不支持onload标签怎么办
2006/06/29 Javascript
jquery网页元素拖拽插件效果及实现
2013/08/05 Javascript
上传文件返回的json数据会被提示下载问题解决方案
2014/12/03 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
2015/01/21 Javascript
基于Vue2的移动端开发环境搭建详解
2016/11/03 Javascript
jQuery复合事件用法示例
2017/06/10 jQuery
Vue中父子组件通讯之todolist组件功能开发
2018/05/21 Javascript
JavaScript剩余操作符Rest Operator详解
2019/07/20 Javascript
Element中Slider滑块的具体使用
2020/07/29 Javascript
基于NodeJS开发钉钉回调接口实现AES-CBC加解密
2020/08/20 NodeJs
python实现二分查找算法
2017/09/21 Python
python获取代理IP的实例分享
2018/05/07 Python
详解python分布式进程
2018/10/08 Python
通过字符串导入 Python 模块的方法详解
2019/10/27 Python
在pycharm中实现删除bookmark
2020/02/14 Python
Python如何进行时间处理
2020/08/06 Python
python利用appium实现手机APP自动化的示例
2021/01/26 Python
CSS3田字格列表的样式编写方法
2018/11/22 HTML / CSS
css3 flex实现div内容水平垂直居中的几种方法
2020/03/27 HTML / CSS
moosejaw旗下的户外商品促销网站:Mountain Steals
2017/02/27 全球购物
澳大利亚婴儿喂养品牌:Cherub Baby
2018/11/01 全球购物
有趣、实用和鼓舞人心的产品:Inspire Uplift
2019/11/05 全球购物
捐资助学倡议书
2014/04/15 职场文书
2014年体检中心工作总结
2014/12/23 职场文书
小学一年级数学教学计划
2015/01/20 职场文书
先进工作者主要事迹材料
2015/11/03 职场文书
创业计划书之川味火锅店
2019/09/02 职场文书
详解Vue的options
2021/05/15 Vue.js