使用python实现递归版汉诺塔示例(汉诺塔递归算法)

 更新时间:2014年04月08日 11:11:56   作者:  
这篇文章主要介绍了使用python实现递归版汉诺塔示例(汉诺塔递归算法),需要的朋友可以参考下

利用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 ORM框架Peewee用法详解

    Python ORM框架Peewee用法详解

    这篇文章主要介绍了Python ORM框架Peewee用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Python 处理带有 \u 的字符串操作

    Python 处理带有 \u 的字符串操作

    这篇文章主要介绍了Python 处理带有 \u 的字符串操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • python TK库简单应用(实时显示子进程输出)

    python TK库简单应用(实时显示子进程输出)

    这篇文章主要介绍了python TK库简单应用(实时显示子进程输出),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • 在Lighttpd服务器中运行Django应用的方法

    在Lighttpd服务器中运行Django应用的方法

    这篇文章主要介绍了在Lighttpd服务器中运行Django应用的方法,本文所采用的是最流行的FastCGI模块,包括同时运行多个Django应用的方法,需要的朋友可以参考下
    2015-07-07
  • PyCharm插件开发实践之PyGetterAndSetter详解

    PyCharm插件开发实践之PyGetterAndSetter详解

    这篇文章主要介绍了PyCharm插件开发实践-PyGetterAndSetter,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-10-10
  • 七个Python必备的GUI库

    七个Python必备的GUI库

    这篇文章主要介绍了七个Python必备的GUI库,帮助大家更好的理解和学习使用python制作gui程序,感兴趣的朋友可以了解下
    2021-04-04
  • Python多线程和队列操作实例

    Python多线程和队列操作实例

    这篇文章主要介绍了Python多线程和队列操作实例,本文直接给给实例代码,需要的朋友可以参考下
    2015-06-06
  • python移位运算的实现

    python移位运算的实现

    这篇文章主要介绍了python移位运算的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • python实现微信机器人: 登录微信、消息接收、自动回复功能

    python实现微信机器人: 登录微信、消息接收、自动回复功能

    这篇文章主要介绍了python实现微信机器人: 登录微信、消息接收、自动回复功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Python Pendulum进行日期时间处理的示例详解

    Python Pendulum进行日期时间处理的示例详解

    Pendulum 是对 Python datetime 的继承和发展,让日期时间处理更简单,这篇文章主要为大家详细介绍了Pendulum的具体应用,需要的可以参考下
    2025-02-02

最新评论