一、问题描述
将A柱子中所有圆环转移至C柱子,在转移过程中保持大圆环在下小圆环在上。
二、代码实现
'''
汉诺塔问题
'''
count = 0
# count:转移圆环次数
def hanoi(n,src,dst,mid):
# n:A柱子上圆环的剩余数量
# src:源柱子
# dst:目标柱子
# mid:中间柱子
global count
if n == 1:
print("{}:{}->{}".format(1,src,dst))
count +=1
# 若A柱子上只剩下1个圆环,直接将圆环从源柱子转移至目标柱子即可
else:
hanoi(n-1,src,mid,dst)
print("{}:{}->{}".format(n,src,dst))
count +=1
hanoi(n-1,mid,dst,src)
# 其余n-1个圆环,是将圆环从源柱子转移至中间柱子后,再从中间柱子转移至目标柱子
hanoi(4,"A","C","B")
print(count)