【摘要】算法作业,一个小问题,不知道老师为啥要问贴代码: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版
小东
简介:专业团队网站开发、安全运维,合作意向请联系!
发表评论