汉诺塔问题-python版

【摘要】算法作业,一个小问题,不知道老师为啥要问贴代码:defmoveHLT(n,a,b,c):count=0ifn==1:print(a,"==>",c)#将最后一个...

算法作业,一个小问题,不知道老师为啥要问

贴代码:

def moveHLT(n, a, b, c):
    count = 0
    if n==1:
        print(a, "==>", c)                # 将最后一个盘子移动到 c 上
        return 1                          # 移动一次                 
    else:
        count += moveHLT(n-1, a, c, b) # 将 n-1 个盘子移动到 b 上,b 相当于一个缓冲区
        count += moveHLT(1, a, b, c)   # 将 n-1 移动到 b 后, 将最后一个盘子直接放在 c 上
        count += moveHLT(n-1, b, a, c) # 将 n-1 从缓冲区 b 移动到 c 上, 完成
        return count   #计数

if __name__ == "__main__":
    n=5  #有几个盘子
    print("需要移动:"+str(moveHLT(n, 'A', 'B', 'C')) + " 次")

最后就是得出规律:有n个盘子,就需要移动2^n-1次

未经允许不得转载:第一资源网 » 汉诺塔问题-python版

 小东
 简介:专业团队网站开发、安全运维,合作意向请联系!

扫码关注微信公众号:ITDYBOY,学前端,学安全,从0到1,从1到精通!

扫码关注微信公众号:ITDYBOY

发表评论

游客
送你一朵小花花~

帅人已评(11)