使用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编写一个简单的俄罗斯方块游戏的教程
Apr 03 Python
Python3 中文文件读写方法
Jan 23 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
Jul 25 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
Aug 22 Python
Python wxpython模块响应鼠标拖动事件操作示例
Aug 23 Python
Django中使用Celery的教程详解
Aug 24 Python
Python中asyncio与aiohttp入门教程
Oct 16 Python
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
May 27 Python
python中怎么表示空值
Jun 19 Python
python基于pexpect库自动获取日志信息
Feb 01 Python
Python绘制地图神器folium的新人入门指南
May 23 Python
Python pandas求方差和标准差的方法实例
Aug 04 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
java EJB 加密与解密原理的一个例子
2008/01/11 PHP
PHP中使用GD库创建圆形饼图的例子
2014/11/19 PHP
CI框架实现框架前后端分离的方法详解
2016/12/30 PHP
PHP设计模式之装饰器模式定义与用法详解
2018/04/02 PHP
javascript 学习之旅 (3)
2009/02/05 Javascript
BOM与DOM的区别分析
2010/10/26 Javascript
js jq 单击和双击区分示例介绍
2013/11/05 Javascript
JavaScript使用function定义对象并调用的方法
2015/03/23 Javascript
微信小程序 条件渲染详解
2016/10/09 Javascript
JS定时器实现数值从0到10来回变化
2016/12/09 Javascript
微信小程序 轮播图swiper详解及实例(源码下载)
2017/01/11 Javascript
Node.js数据库操作之查询MySQL数据库(二)
2017/03/04 Javascript
深入理解基于vue-cli的vuex配置
2017/07/24 Javascript
Vue 实现双向绑定的四种方法
2018/03/16 Javascript
jquery.onoff实现简单的开关按钮功能(推荐)
2018/05/24 jQuery
使用jquery模拟a标签的click事件无法实现跳转的解决
2018/12/04 jQuery
微信小程序云开发 搭建一个管理小程序
2019/05/17 Javascript
PyCharm设置护眼背景色的方法
2018/10/29 Python
详解django+django-celery+celery的整合实战
2019/03/19 Python
详解python中自定义超时异常的几种方法
2019/07/29 Python
python中JWT用户认证的实现
2020/05/18 Python
django下创建多个app并设置urls方法
2020/08/02 Python
python中二分查找法的实现方法
2020/12/06 Python
浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
2017/01/12 HTML / CSS
利用 Canvas实现绘画一个未闭合的带进度条的圆环
2019/07/26 HTML / CSS
GUESS盖尔斯法国官网:美国时尚品牌
2016/09/23 全球购物
迪拜航空官方网站:flydubai
2017/04/20 全球购物
Carrs Silver官网:英国著名的银器品牌
2020/08/29 全球购物
配置管理计划的主要内容有哪些
2014/06/20 面试题
欢度春节标语
2014/07/01 职场文书
活动总结范文
2014/08/30 职场文书
大学教师个人总结
2015/02/10 职场文书
学生会生活部工作总结2015
2015/03/31 职场文书
团日活动总结格式
2015/05/11 职场文书
遗嘱范文
2015/08/07 职场文书
品牌形象定位,全面分析
2019/07/23 职场文书