您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

5b51 2022/1/14 8:15:09 python 字数 2229 阅读 322 来源 www.jb51.cc/python

利用python实现的汉诺塔。带有图形演示 复制代码代码如下:fromtimeimportsleep defdisp_sym(num,sym):???????print(sym*num,end=\'\')

概述

利用python实现的汉诺塔。带有图形演示

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,n-1,tray_num)
  move_tray(a,c)
  disp(tray_num)
  sleep(0.7)
  hanoi(b,a,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,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,tray_num,tray_num)

总结

以上是编程之家为你收集整理的使用python实现递归版汉诺塔示例(汉诺塔递归算法)全部内容,希望文章能够帮你解决使用python实现递归版汉诺塔示例(汉诺塔递归算法)所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶