用手模拟一下Hanio大致过程,代码就差不多出来了。
# 汉诺塔Hanoi_v2
# 编写一个汉诺塔的程序,要求将所有的圆盘从最右边的柱子移动到最左边的柱子。
# 汉诺塔层数 = 6
# 定义一个变量 count 用于记录移动的盘子移动的总次数
count = 0
mp = {"A":[0],"B":[0],"C":[1,2,3,4,5,6]}
def deal(src,dst):
print(str(mp[src][0])+":"+src+"->"+dst)
mp[dst].insert(0,mp[src][0])
del mp[src][0]
def hanoi(n, src, dst, mid):
global count
count+=1
if n==1:
deal(src,dst)
return
hanoi(n-1,src,mid,dst)
deal(src,dst)
hanoi(n-1,mid,dst,src)
# 6层汉诺塔,将圆盘从最后边的柱子移动到最左边的柱子
hanoi(6,'C','A','B')
# 输出移动的次数
print("总共移动了{}次。".format(count))
部分结果如图