使用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中Genarator函数用法分析
Apr 08 Python
Python3.6 Schedule模块定时任务(实例讲解)
Nov 09 Python
python获取代码运行时间的实例代码
Jun 11 Python
Python内存读写操作示例
Jul 18 Python
Python3+PyInstall+Sciter解决报错缺少dll、html等文件问题
Jul 15 Python
pytorch之inception_v3的实现案例
Jan 06 Python
PyTorch加载预训练模型实例(pretrained)
Jan 17 Python
python 字符串的驻留机制及优缺点
Jun 19 Python
keras在构建LSTM模型时对变长序列的处理操作
Jun 29 Python
django模型类中,null=True,blank=True用法说明
Jul 09 Python
python 对象真假值的实例(哪些视为False)
Dec 11 Python
详解pandas apply 并行处理的几种方法
Feb 24 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 中的str_replace 函数总结
2007/04/27 PHP
PHP callback函数使用方法和注意事项
2015/01/23 PHP
PHP调用其他文件中的类
2018/04/02 PHP
js DOM模型操作
2009/12/28 Javascript
基于Jquery的表格隔行换色,移动换色,点击换色插件
2010/12/22 Javascript
jQuery选择器的工作原理和优化分析
2011/07/25 Javascript
javascript 获取函数形参个数
2014/07/31 Javascript
html的DOM中document对象images集合用法实例
2015/01/21 Javascript
JavaScript学习笔记之JS对象
2015/01/22 Javascript
JavaScript使用setTimeout实现延迟弹出警告框的方法
2015/04/07 Javascript
通过node-mysql搭建Windows+Node.js+MySQL环境的教程
2016/03/01 Javascript
BootStrap初学者对弹出框和进度条的使用感觉
2016/06/27 Javascript
slideToggle+slideup实现手机端折叠菜单效果
2017/05/25 Javascript
js实现从左向右滑动式轮播图效果
2017/07/07 Javascript
浅谈ajax请求不同页面的微信JSSDK问题
2018/02/26 Javascript
Vue使用预渲染代替SSR的方法
2020/07/02 Javascript
Ant Design的Table组件去除
2020/10/24 Javascript
在vue项目中 实现定义全局变量 全局函数操作
2020/10/26 Javascript
python实现udp数据报传输的方法
2014/09/26 Python
详解Python读取配置文件模块ConfigParser
2017/05/11 Python
python学习笔记之列表(list)与元组(tuple)详解
2017/11/23 Python
python实现机器学习之多元线性回归
2018/09/06 Python
Matplotlib中文乱码的3种解决方案
2018/11/15 Python
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
荷兰之家英文站:Holland at Home
2016/10/26 全球购物
介绍下Java的输入输出流
2014/01/22 面试题
利用异或运算实现两个无符号数的加法运算
2013/12/20 面试题
电子商务网站的创业计划书
2014/01/05 职场文书
学年自我鉴定
2014/01/16 职场文书
培训专员岗位职责
2014/02/26 职场文书
医院节能减排方案
2014/06/13 职场文书
2015年乡镇民政工作总结
2015/05/13 职场文书
小学语文继续教育研修日志
2015/11/13 职场文书
导游词之贵州织金洞
2019/10/12 职场文书
Win11怎么解除儿童账号限制?Win11解除微软儿童账号限制方法
2022/07/07 数码科技
Windows7下FTP搭建图文教程
2022/08/05 Servers