C++详解汉诺塔,你不懂算我输

本文深入探讨了汉诺塔问题中的递归思想。通过详细解释三个关键步骤,尤其是如何将最底层盘子移动,并分析移动过程中柱子状态的变化,揭示了递归的本质。文章附带了C++代码实现及其运行结果,帮助读者更好地理解汉诺塔问题的解决方案。
摘要由CSDN通过智能技术生成

##题目就不再赘述了,这里我想重点说一下里面的递归思想
初始位置图,以三个盘子为例方便期间我们给每个盘子编号如下:
在这里插入图片描述
整个过程就是要将x上的盘子移到z上面,可以分为三个步骤(思考为什么分为三个步骤)

1.我要将最底层的移到z,那么上面的盘子肯定都要移到y,就像这样:

在这里插入图片描述
##2.这一步自然而然的就是将最底层的移到z
在这里插入图片描述
##3.那么仔细思考,这和刚开始的图有什么区别?(如果你能看到无非是最大牌子到z了(我们移动其他牌子更不受大盘子的影响),其他的只是所在柱上的名字改了,那么恭喜你接近递归的本质了,你也应该想出第三步了。)就是将y上的牌子移到z。
给你一副图:(和第一幅图对比,这就是汉诺它可以写成递归的原因)

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值