Python之汉诺塔递归问题

来源:Python语言程序设计 -嵩天

一、问题描述

将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)

猜你喜欢

转载自blog.csdn.net/shine_00/article/details/119810690