• 【汉诺塔】问题,详细解析,手把手教会你



    前言

    各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你:
    📕 JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等
    📗 Java数据结构: 顺序表, 链表, 堆, 二叉树, 二叉搜索树, 哈希表等
    📘 JavaEE初阶: 多线程, 网络编程, TCP/IP协议, HTTP协议, Tomcat, Servlet, Linux, JVM等(正在持续更新)

    汉诺塔,一个为【递归】而生的经典问题,相信很多小伙伴都被汉诺塔问题搞晕过,本篇将详细介绍汉诺塔的实现方式思路解析
    如果还有小伙伴对【递归】不太熟练的可以看看这篇文章,有对方法的递归详细介绍噢


    提示:是正在努力进步的小菜鸟一只,如有大佬还有更妙的解法欢迎评论区讨论~ 废话不多说,直接上干货!

    一、汉诺塔问题

    相传在古印度圣庙中,有一种被称为汉诺塔的游戏。该游戏是在一块铜板装置上,有三根杆子:编号 A、 B、 C,在A杆自下而上、由大到小按顺序放置 n 个盘子
    游戏的目标:把 A 杆上的金盘全部移到 C 杆上,并仍保持原有顺序叠好
    操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于 A、 B、 C任一杆上。


    二、思路分析

    我从1个盘子开始慢慢给大家演示移动过程:

    在这里插入图片描述


    下面分析两个盘子:

    在这里插入图片描述


    下面看三个盘子:

    在这里插入图片描述
    重点来啦!!
    我们先不关心如何移动盘子,只记住:
    从 A 开始借助了 C ,将 A 中的 n - 1 个盘子移动到 C ,然后把 A 中盘子移到 C

    其实在这里就已经有递归思想的雏形了,但还不够清晰,我们继续


    下面看四个盘子:

    在这里插入图片描述
    在这里插入图片描述

    那么递归的思想就是 :
    移动 A 中的四个盘子,只需要移动前 n - 1个,
    然后 A -> C
    再移动 B 中的三个盘子,只需要移动前 n - 1个

    注意:我们不去关心每一轮移动具体是如何移动的,交给递归去一次次实现即可

    还有几个问题:

    在这里插入图片描述

    在这里插入图片描述


    三、代码展示

    在这里插入图片描述
    我们以 n = 4 代入代码推演一遍:

    • 0、准备移动
      传参顺序:A 是出发站, B 是中转站, C 是目标站(第 31 行)

    • 1、移动 A 上的 n - 1 个盘子,在 C 中转,移动到 B
      传参顺序:A 是出发站, C是中转站, B 是目标站(第 16 行)

    • 2、把 A 的盘子移动到 C (第 17 行)

    • 3、接下来移动 B 上的 n - 1 个盘子,在 A 中转,移动到 C
      传参顺序: B 是出发站, A 是中转站, C 是目标站(第 18 行)

    注意:传参的顺序就是进入递归之后,接收参数的顺序 你只管传参,剩下的交给递归


    总结

    以上就是今天要讲的【汉诺塔问题】,只要各位能把图画明白,沉下心来思考每一 “阶段” 移动方式,寻找 “大事化小且原理相同” 的解决办法,不必考虑细节实现方式,只要找到宏观规律即可。

    刚上手的小伙伴可以先画图,从 n = 2 开始慢慢修改代码,代码写对之后再倒推一边!相信你也可以的!!

    如果本篇对你有帮助,请点赞收藏支持一下,小手一抖就是对作者莫大的鼓励啦😋😋😋~


    上山总比下山辛苦
    下篇文章见

    在这里插入图片描述

  • 相关阅读:
    什么是分库分表-01
    14x1.5cm竖向标签有点难,VFP调用BarTender来打印
    神经网络工业控制流程图,神经网络工业应用
    华为机试真题 Java 实现【日志首次上报最多积分】【2022.11 Q4 新题】
    2022年下半年信息系统项目管理师上午真题及答案解析
    【概率论与数理统计】【线性代数】计算机保研复习
    iText7高级教程之构建基础块——6.创建动作(Action)、目标(destinations)和书签(bookmarks)
    关于nginx的配置转发到其他网站
    nacos核心概念一篇速过
    数据库(1):数据库初识与基本操作
  • 原文地址:https://blog.csdn.net/yzhcjl_/article/details/127668585