使用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实现html转ubb代码(html2ubb)
Jul 03 Python
python中global用法实例分析
Apr 30 Python
Django 登陆验证码和中间件的实现
Aug 17 Python
Pandas过滤dataframe中包含特定字符串的数据方法
Nov 07 Python
python+ffmpeg批量去视频开头的方法
Jan 09 Python
django中间键重定向实例方法
Nov 10 Python
Python实现数值积分方式
Nov 20 Python
python飞机大战pygame碰撞检测实现方法分析
Dec 17 Python
python tkinter 设置窗口大小不可缩放实例
Mar 04 Python
python的setattr函数实例用法
Dec 16 Python
python os.listdir()乱码解决方案
Jan 31 Python
Python字符串常规操作小结
Apr 03 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读取IMAP邮件
2006/10/09 PHP
PHP5中GD库生成图形验证码(有汉字)
2013/07/28 PHP
php运行时动态创建函数的方法
2015/03/16 PHP
微信随机生成红包金额算法php版
2016/07/21 PHP
php计算多个集合的笛卡尔积实例详解
2017/02/16 PHP
PHP实现函数内修改外部变量值的方法示例
2018/12/28 PHP
javascript 树控件 比较好用
2009/06/11 Javascript
javascript实现的基于金山词霸网络翻译的代码
2010/01/15 Javascript
jquery 使用点滴函数代码
2011/05/20 Javascript
JS日期加减,日期运算代码
2015/11/05 Javascript
基于JQuery实现图片轮播效果(焦点图)
2016/02/02 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
微信小程序 两种为对象属性赋值的方式详解
2017/02/23 Javascript
ES6新特性之字符串的扩展实例分析
2017/04/01 Javascript
运用jQuery写的验证表单(实例讲解)
2017/07/06 jQuery
vue 打包后的文件部署到express服务器上的方法
2017/08/09 Javascript
原生js实现form表单序列化的方法
2018/08/02 Javascript
vue中利用Promise封装jsonp并调取数据
2019/06/18 Javascript
基于better-scroll 实现歌词联动功能的代码
2020/05/07 Javascript
[01:11:32]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python subprocess模块详细解读
2018/01/29 Python
在unittest中使用 logging 模块记录测试数据的方法
2018/11/30 Python
使用Python实现将list中的每一项的首字母大写
2019/06/11 Python
python3爬虫GIL修改多线程实例讲解
2020/11/24 Python
canvas小画板之平滑曲线的实现
2020/08/12 HTML / CSS
什么是网络协议
2016/04/07 面试题
十佳教师事迹材料
2014/01/11 职场文书
园林设计专业毕业生求职信
2014/03/23 职场文书
年会搞笑主持词串词
2014/03/24 职场文书
竞聘书模板
2014/03/31 职场文书
环境工程专业自荐信范文
2014/06/24 职场文书
2014统计局民主生活会对照检查材料思想汇报
2014/10/02 职场文书
银行职员工作失误检讨书
2014/10/14 职场文书
贷款担保书
2015/01/20 职场文书
学期个人自我总结
2015/02/13 职场文书
领导欢送会主持词
2015/07/06 职场文书