国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

使用python實現遞歸版漢諾塔示例(漢諾塔遞歸算法)

2019-11-25 18:27:27
字體:
來源:轉載
供稿:網友

利用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)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 凭祥市| 临泽县| 乐安县| 大渡口区| 南汇区| 滦平县| 唐山市| 杭州市| 安庆市| 泾阳县| 贡山| 大渡口区| 易门县| 南岸区| 海淀区| 华阴市| 沁源县| 乾安县| 华容县| 宜川县| 香格里拉县| 曲麻莱县| 鄂州市| 普兰县| 民和| 威信县| 惠水县| 东至县| 汝城县| 磴口县| 海阳市| 湘潭市| 溧阳市| 兴城市| 和林格尔县| 大城县| 乐东| 绩溪县| 石嘴山市| 南雄市| 临邑县|