Python 汉诺塔问题实现
看了几个讲解的文章和视频,基本都没有很明确的说明解法。
实际上Python实现是将汉诺塔的问题归纳成了最底层的大盘子N 以及 N以上的其他盘子 N-1,以最简单的两个盘子的实现,以递归方式来解决多个盘子的问题。
环境模拟:大盘子是N,小盘子是(N-1),三个柱子:first ,second,third,大盘子在first上,借助second,全部移动到third
两个盘子怎么移动? 三个步骤即可实现:
步骤一:最小的盘子(N-1),从first上移动second
步骤二:最大的盘子N,从first上移动到到third
步骤三:最小的盘子(N-1),从second上移动到third
代码实现时候,着重注意 位置参数,这是很重要的一点,很多文章和视频都没有讲明白这个位置参数在汉诺塔实现上的问题。
def move(start,target): print('Move %s' %start,'to','%s' %target) def hannoi(n,first,second,third): if n == 1: move(first,third) else: hannoi(n-1,first,third,second) #步骤一:最小的盘子(N-1),从first上移动second hannoi(1,first,second,third) #步骤二:最大的盘子N,从first上移动到到third hannoi(n-1,second,first,third)#步骤三:最小的盘子(N-1),从second上移动到third print('N=1') hannoi(1,'A','B','C') print('N=2') hannoi(2,'A','B','C') print('N=3') hannoi(3,'A','B','C')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构