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

首頁 > 編程 > Python > 正文

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

2020-02-23 05:18:34
字體:
來源:轉載
供稿:網友

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 同仁县| 冕宁县| 景德镇市| 芮城县| 永靖县| 北安市| 诏安县| 习水县| 贵定县| 甘孜县| 岳池县| 五寨县| 德格县| 和平县| 安达市| 宜宾市| 芜湖县| 墨玉县| 仁化县| 榆树市| 得荣县| 哈巴河县| 铜梁县| 玛曲县| 灵宝市| 西贡区| 七台河市| 耒阳市| 古浪县| 吕梁市| 榕江县| 新竹县| 泸水县| 板桥市| 长顺县| 铅山县| 辛集市| 陇南市| 临海市| 乳源| 肥城市|