signed

QiShunwang

“诚信为本、客户至上”

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

2021/6/9 7:00:07   来源:

利用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求解汉诺塔游戏
  • python实现的汉诺塔算法示例
  • python实现汉诺塔算法
  • Python递归实现汉诺塔算法示例
  • python实现汉诺塔方法汇总
  • python实现汉诺塔递归算法经典案例
  • python益智游戏计算汉诺塔问题示例
  • 利用python实现汉诺塔游戏