使用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 过滤字符串的技巧,map与itertools.imap
Sep 06 Python
python将多个文本文件合并为一个文本的代码(便于搜索)
Mar 13 Python
Python编写电话薄实现增删改查功能
May 07 Python
python: 自动安装缺失库文件的方法
Oct 22 Python
Python3爬虫学习之MySQL数据库存储爬取的信息详解
Dec 12 Python
Python list列表中删除多个重复元素操作示例
Feb 27 Python
Python pip 安装与使用(安装、更新、删除)
Oct 06 Python
Python实现线性插值和三次样条插值的示例代码
Nov 13 Python
python多进程并发demo实例解析
Dec 13 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
Mar 09 Python
Django实现将一个字典传到前端显示出来
Apr 03 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
Jan 05 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
超人钢铁侠联手合作?美漫作家呼吁DC漫威合作联动以抵抗疫情
2020/04/09 欧美动漫
PHP5 安装方法
2007/01/15 PHP
php多重接口的实现方法
2015/06/20 PHP
PHP+Ajax验证码验证用户登录
2016/07/20 PHP
ThinkPHP的SAE开发相关注意事项详解
2016/10/09 PHP
php精度计算的问题解析
2019/06/21 PHP
Javascript 判断客户端浏览器类型代码
2010/03/01 Javascript
基于jquery的网页SELECT下拉框美化代码
2010/10/28 Javascript
各浏览器中querySelector和querySelectorAll的实现差异分析
2012/05/23 Javascript
javascript数据结构之双链表插入排序实例详解
2015/11/25 Javascript
JavaScript学习笔记之数组的增、删、改、查
2016/03/23 Javascript
深入剖析JavaScript中的函数currying柯里化
2016/04/29 Javascript
jQuery实现动态删除LI的方法
2017/05/30 jQuery
微信小程序之多列表的显示和隐藏功能【附源码】
2018/08/06 Javascript
layui从数据库中获取复选框的值并默认选中方法
2018/08/15 Javascript
vue webpack打包后图片路径错误的完美解决方法
2018/12/07 Javascript
原生js实现ajax请求和JSONP跨域请求操作示例
2020/03/14 Javascript
js实现随机点名器精简版
2020/06/29 Javascript
基于Python的关键字监控及告警
2017/07/06 Python
利用python实现简单的邮件发送客户端示例
2017/12/23 Python
Python批量启动多线程代码实例
2020/02/18 Python
python修改linux中文件(文件夹)的权限属性操作
2020/03/05 Python
Python第三方库的几种安装方式(小结)
2020/04/03 Python
详解selenium + chromedriver 被反爬的解决方法
2020/10/28 Python
html5组织文档结构_动力节点Java学院整理
2017/07/11 HTML / CSS
中国排名第一的外贸销售网站:LightInTheBox.com(兰亭集势)
2016/10/28 全球购物
受希腊女神灵感的晚礼服、鸡尾酒礼服和婚纱:THEIA
2018/04/15 全球购物
美国专业汽车音响和移动电子产品零售商:Car Toys
2019/05/13 全球购物
Linux开机引导的步骤是什么
2014/02/26 面试题
几个MySql的面试题
2013/04/22 面试题
构造方法和其他方法的区别
2016/04/26 面试题
门卫岗位安全职责
2013/12/13 职场文书
父亲生日宴会答谢词
2014/01/10 职场文书
《理想》教学反思
2014/02/17 职场文书
如何自己动手写SQL执行引擎
2021/06/02 MySQL
HTML CSS 一个标签实现带动画的抖音LOGO
2022/04/26 HTML / CSS