这篇文章主要介绍了使用python实现递归版汉诺塔示例(汉诺塔递归算法),需要的朋友可以参考下
利用python实现的汉诺塔。带有图形演示
from time import sleepdef 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实现递归版汉诺塔示例(汉诺塔递归算法)
2021-10-17阅读(3677)评论(0)推荐()这篇文章主要介绍了使用python实现递归版汉诺塔示例(汉诺塔递归算法),需要的朋友可以参考下
Python递归实现汉诺塔算法示例
2021-10-17阅读(9896)评论(0)推荐()这篇文章主要介绍了Python递归实现汉诺塔算法,结合实例形式分析了汉诺塔算法的原理、实现步骤与相关操作技巧,需要的朋友可以参考下
PHP递归实现汉诺塔问题的方法示例
2021-10-08阅读(4450)评论(0)推荐()这篇文章主要介绍了PHP递归实现汉诺塔问题的方法,简单描述了汉诺塔问题,并结合实例形式分析了PHP基于递归算法解决汉诺塔问题的相关操作技巧,需要的朋友可以参考下
c#汉诺塔的递归算法与解析
2021-10-05阅读(6187)评论(0)推荐()c#汉诺塔的递归算法与解析,需要的朋友可以参考一下
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
2021-11-06阅读(8100)评论(0)推荐()这篇文章主要介绍了Python基于递归算法实现的汉诺塔与Fibonacci数列,结合实例形式分析了汉诺塔与Fibonacci数列的递归实现技巧,需要的朋友可以参...
java基于递归算法实现汉诺塔问题实例
2021-10-10阅读(9284)评论(0)推荐()这篇文章主要介绍了java基于递归算法实现汉诺塔问题,结合具体实例形式分析了java递归算法的实现与使用技巧,需要的朋友可以参考下
python实现汉诺塔递归算法经典案例
2021-10-12阅读(4766)评论(0)推荐()这篇文章主要大家分享了python实现汉诺塔递归算法经典案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
取消
提交评论