最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

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

来源:动视网 责编:小采 时间:2020-11-27 14:30:17
文档

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

使用python实现递归版汉诺塔示例(汉诺塔递归算法):利用python实现的汉诺塔。带有图形演示 代码如下:from time import sleep def disp_sym(num, sym): print(sym*num, end='') #recusiondef hanoi(a, b, c, n, tray_num): if n == 1: move_tray(a, c) dis
推荐度:
导读使用python实现递归版汉诺塔示例(汉诺塔递归算法):利用python实现的汉诺塔。带有图形演示 代码如下:from time import sleep def disp_sym(num, sym): print(sym*num, end='') #recusiondef hanoi(a, b, c, n, tray_num): if n == 1: move_tray(a, c) dis


利用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实现的汉诺塔。带有图形演示 代码如下:from time import sleep def disp_sym(num, sym): print(sym*num, end='') #recusiondef hanoi(a, b, c, n, tray_num): if n == 1: move_tray(a, c) dis
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top