使用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中的对象拷贝示例 python引用传递
Jan 23 Python
python多线程抓取天涯帖子内容示例
Apr 03 Python
python 二分查找和快速排序实例详解
Oct 13 Python
python删除字符串中指定字符的方法
Aug 13 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
Dec 12 Python
Pycharm配置远程调试的方法步骤
Dec 17 Python
pandas取出重复数据的方法
Jul 04 Python
django如何自己创建一个中间件
Jul 24 Python
django 中QuerySet特性功能详解
Jul 25 Python
简单了解python列表和元组的区别
May 14 Python
Python编程中Python与GIL互斥锁关系作用分析
Sep 15 Python
python数据可视化使用pyfinance分析证券收益示例详解
Nov 20 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的password_hash()使用实例
2014/03/17 PHP
php+mysql查询实现无限下级分类树输出示例
2016/10/03 PHP
PHP连接MySQL数据库操作代码实例解析
2020/07/11 PHP
JavaScript 动态添加表格行 使用模板、标记
2009/10/24 Javascript
javascript使用中为什么10..toString()正常而10.toString()出错呢
2013/01/11 Javascript
jQuery学习笔记之jQuery动画效果
2013/09/09 Javascript
js 获取、清空input type="file"的值(示例代码)
2013/12/24 Javascript
jquery设置按钮停顿3秒不可用
2014/03/07 Javascript
JavaScript学习心得之概述
2015/01/20 Javascript
使用npm发布Node.JS程序包教程
2015/03/02 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
2015/07/10 Javascript
JavaScript html5利用FileReader实现上传功能
2020/03/27 Javascript
jQuery操作之效果详解
2017/05/19 jQuery
详解使用nvm安装node.js
2017/07/18 Javascript
Cookbook组件形式:优化 Vue 组件的运行时性能
2018/11/25 Javascript
浅谈Vue服务端渲染框架Nuxt的那些事
2018/12/21 Javascript
jQuery事件多次绑定与解绑问题实例分析
2019/02/19 jQuery
JS通用方法触发点击事件代码实例
2020/02/17 Javascript
[02:07]TI9显影之尘系列 - Vici Gaming
2019/08/20 DOTA
Python中字典的基本知识初步介绍
2015/05/21 Python
在Python中操作字典之update()方法的使用
2015/05/22 Python
对Python中的@classmethod用法详解
2018/04/21 Python
Python数据可视化教程之Matplotlib实现各种图表实例
2019/01/13 Python
Django框架用户注销功能实现方法分析
2019/05/28 Python
将python运行结果保存至本地文件中的示例讲解
2019/07/11 Python
python hmac模块验证客户端的合法性
2020/11/07 Python
智能家居、吸尘器、滑板车、电动自行车网上购物:Geekmaxi
2021/01/18 全球购物
面向对象编程是如何提高软件开发水平的
2014/05/06 面试题
C/C++ 笔试、面试题目大汇总
2015/11/21 面试题
师范生自荐信
2013/10/27 职场文书
聚美优品广告词改编
2014/03/14 职场文书
岗位竞聘演讲稿范文
2014/04/24 职场文书
2014年个人技术工作总结
2014/12/08 职场文书
少年派的奇幻漂流观后感
2015/06/08 职场文书
放假通知怎么写
2015/08/18 职场文书
《蚂蚁和蝈蝈》教学反思
2016/02/22 职场文书