使用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实现设置windows桌面壁纸代码分享
Mar 28 Python
Python基于贪心算法解决背包问题示例
Nov 27 Python
pandas object格式转float64格式的方法
Apr 10 Python
python如何以表格形式打印输出的方法示例
Jun 21 Python
Django 开发环境与生产环境的区分详解
Jul 26 Python
python 使用socket传输图片视频等文件的实现方式
Aug 07 Python
django实现用户注册实例讲解
Oct 30 Python
python实现输出一个序列的所有子序列示例
Nov 18 Python
Python.append()与Python.expand()用法详解
Dec 18 Python
Python tkinter和exe打包的方法
Feb 05 Python
Python selenium模拟手动操作实现无人值守刷积分功能
May 13 Python
Python如何读写CSV文件
Aug 13 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中防止SQL注入的最佳解决方法
2013/04/25 PHP
使用php实现下载生成某链接快捷方式的解决方法
2013/05/07 PHP
PHP使用SOAP调用.net的WebService数据
2013/11/12 PHP
什么是OneThink oneThink后台添加插件步骤
2016/04/13 PHP
php微信支付之公众号支付功能
2018/05/30 PHP
javascript demo 基本技巧
2009/12/18 Javascript
一次失败的jQuery优化尝试小结
2011/02/06 Javascript
Extjs TimeField 显示正常时间格式的代码
2011/06/28 Javascript
JavaScript中数据结构与算法(一):栈
2015/06/19 Javascript
解析JavaScript的ES6版本中的解构赋值
2015/07/28 Javascript
基于jQuery实现仿搜狐辩论投票动画代码(附源码下载)
2016/02/18 Javascript
javascript中json基础知识详解
2017/01/19 Javascript
js实现滑动到页面底部自动加载更多功能
2017/02/15 Javascript
jQuery 控制文本框自动缩小字体填充
2017/06/16 jQuery
Vue.js组件间通信方式总结【推荐】
2018/11/23 Javascript
Nuxt使用Vuex的方法示例
2019/09/06 Javascript
JavaScript工具库MyTools详解
2020/01/01 Javascript
vue实现购物车选择功能
2020/01/10 Javascript
Python中操作符重载用法分析
2016/04/29 Python
Python中一些不为人知的基础技巧总结
2018/05/19 Python
python自动保存百度盘资源到百度盘中的实例代码
2019/08/26 Python
python中for循环变量作用域及用法详解
2019/11/05 Python
python输出pdf文档的实例
2020/02/13 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
2020/03/28 Python
Django框架获取form表单数据方式总结
2020/04/22 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
2020/05/21 Python
利用python下载scihub成文献为PDF操作
2020/07/09 Python
CSS3中媒体查询结合rem布局适配手机屏幕
2019/06/10 HTML / CSS
泰国第一的化妆品网站:Konvy
2018/02/25 全球购物
CK巴西官方网站:Calvin Klein巴西
2019/07/19 全球购物
三年级音乐教学反思
2014/01/28 职场文书
供应链金融服务方案
2014/05/25 职场文书
2016大学生诚信考试承诺书
2016/03/25 职场文书
请假条应该怎么写?
2019/06/24 职场文书
2019职场单身人才调研报告:互联网行业单身比例最高
2019/08/07 职场文书
Python Django模型详解
2021/10/05 Python