C语言汉诺塔详解

article/2025/3/11 0:40:08

问题概述:A柱子上从下往上按照大小顺序摞着N片黄金圆盘。要求把圆盘从下面开始按大小顺序重新摆放在另一根(B or C)柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

如图所示:

(ps:我们以从A移动到C来分析)

思路:如果只有一个盘子,那么就是直接把该盘子从A柱子移动到C柱子

如果有两个盘子,那么先把上面的1号盘子从A柱子移动到B柱子,然后将最下面的2号盘子从A柱子移动到C柱子,然后将1号盘子从B柱子移动到C柱子

如果有三个盘子,那么我们想到的肯定是,想要把最大的3号盘子上面的1号和2号盘子移动到B柱子上,然后再把3号盘子从A柱子移动到C柱子上,然后再把1号和2号盘子从B柱子移动到C柱子上。但是,一次只能移动一个盘子,所以,就可以把1号和2号盘子的移动拆解成有两个盘子的情况。

通过三次演示,其实不难发现,对应汉诺塔的问题,我们可以把它拆分成这样的规律

假设有N个盘子,

步骤1:我从A柱子借助C柱子,把前N-1个盘子移动到B柱子上,

步骤2:然后把第N个盘子,从A柱子移动到C柱子上,

步骤3:然后再把前N-1个盘子从B柱子借助A柱子移动到C柱子上。

步骤1又可以拆解成,是如何把N-1个盘子从A柱子移动到B柱子上的,那么就可以把这N-1个盘子,看成同样的一个问题去解决。即

步骤4:把前N-2个盘子从A柱子借助B柱子移动到C柱子上,

步骤5:然后再把第N-1个盘子从A柱子移动到B柱子上,

步骤6:然后再把前N-2个盘子从C柱子移动到B柱子上

步骤4又可以拆解成,是如何把N-2个盘子从A柱子移动到C柱子上的,那么就可以把这N-2个盘子,看成同样的一个问题去解决。即

步骤7:把前N-3个盘子从A柱子借助C柱子移动到B柱子上,

步骤8:然后再把第N-2个盘子从A柱子移动到C柱子上,

步骤9:然后再把前N-3个盘子从B柱子移动到C柱子上

以此类推,层层递进,一直到倒推完成上述步骤,同样的,步骤3也是通过该道理完成的,倒着推回去,就了解了。

递归算法

解法思路:(假设disc_n 等于4

步骤1if条件表达式不成立,使用hanno(3, ‘A’, ‘C’, ‘B’);用来表示步骤1,即将前3个盘子从A柱子借助C柱子移动到B柱子

步骤2而当以该参数再次传递给hanno函数的时候,这个时候,disc_n = 3 pillar_A = ‘A’ pillar_B = ‘C’, pillar_C = ‘B’ 因为不满足if条件表达式,继续将新disc_n的值(值为2)作为参数传递,而此时,因为pillar_B = ‘C’, pillar_C = ‘B’ 所以互换之后,第二次hanno(2, ‘A’, ‘B’, ‘C’);就是从A柱子将前2个盘子借助B柱子移动到C柱子,等价于步骤4,以此类推


http://chatgpt.dhexx.cn/article/32I7m9X8.shtml

相关文章

C语言实现汉诺塔详细步骤(递归与非递归)及代码

前言 C语言汉诺塔问题是一个经典的问题,在学习编程的初学者中非常流行。它涉及到了递归的思想,能够帮助我们理解递归的基本原理。 首先,我们来了解一下汉诺塔的问题。汉诺塔问题是指:有三根柱子A,B,C,A柱子上有n个盘…

汉诺塔(C语言)

文章目录 一、什么是汉诺塔问题? 二、实现步骤 三、代码实现 四、代码分析 一、什么是汉诺塔问题? 汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金…

图文详解汉诺塔(附C语言实现代码)

关注、星标公众号,直达精彩内容 来源:http://a.nxw.so/1iDyQD 一、前言 汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根…

C语言 - 汉诺塔详解(超详细)

文章目录 一、前言二、玩游戏三、汉诺塔打印步数四、汉诺塔打印步骤 一、前言 一、汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下…

汉诺塔问题以及青蛙跳台阶问题(附C语言代码)

汉诺塔问题: 汉诺塔问题的源于印度一个古老传说的益智玩具。大焚天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照先大后小的顺序摞着64片圆盘。大焚天命令婆罗门把圆盘从下面按大小顺序重新摆放在另一根柱子上,并且规定在小盘…

Mac上显示实时网速小工具

1.iStat Menus 6 功能较丰富,比如你想看大冬天电脑温度等,毕竟Mac本出现过无法充电和无法开机的情况,明明是90多的点(自己MBP2018出现过) 下载地址:https://bjango.com/mac/istatmenus/ 激活&#xff1a…

在mac上显示网速的软件——iStat Menus 5:

在mac上显示网速的软件——iStat Menus 5: https://bjango.com/mac/istatmenus/ 注册码: Email: 982092332qq.com SN: GAWAE-FCWQ3-P8NYB-C7GF7-NEDRT-Q5DTB-MFZG6-6NEQC-CRMUD-8MZ2K-66SRB-SU8EW-EDLZ9-TGH3S-8SGA 「注册码源于:http://www.pc6.com/mac/111587.html」 转载于…

断点续传

断点续传的实现思路 1、每次一进来,先给总大小和已经下载的大小赋值,判断若不是从头下载,则显示进度条2、暂停的时候,取消请求,并用 NSUserDefaults记录下载的暂停位置(客户端记录)3、继续下载的…

iStat Menus 无法正常读取传感器温度的解决办法

文章目录 问题解决方式如果是App Store版本,安装插件如果是突然读取不到,尝试重置传感器过滤器重置Mac的SMC使用新版软件 问题 换了电脑之后,像往常一样安装了各种惯用软件。最后发现iStat Menus 没办法读取硬件温度,只能读取到一…

Mac上实时网速、内存等显示

对我这种有强迫症的,要监控各种参数,比如实时网速显示,这里给大家推荐 iStat Menus 1、官网下载 https://bjango.com/mac/istatmenus/ 2、注册码(仅供学习研究,误作商业用途) xxxx-xxxx-xxxx-xxxx-xxxx…

Mac过热降频的罪魁祸首,竟是插到了左边的Type-C口

晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI 自从MacBook Pro换成最新设计后,用户的吐槽就没停过,最大的槽点就是那4个Type-C插口。 虽然你今后离不开转接器了,但苹果说4个Type-C更方便,因为可以随便插,每个都可以给…

笔记本计算机左侧插,Mac过热降频的罪魁祸首,竟是插到了左边的Type-C口!

Mac过热降频的罪魁祸首,竟是插到了左边的Type-C口! 2020-04-27 19:00:31 2点赞 1收藏 0评论 创作立场声明:长期不正经,独立主观第三方 晓查 发自 凹非寺 鹅板凳 报道 | 公众号 QbitAI 自从MacBook Pro换成最新设计后,用…

Mac常用软件推荐

今天推荐一些Mac上常用的软件,如果你不是开发者,也同样可以安装这些软件,这些软件确实很方便 安装包打不开的问题有时候我们下载下来的安装包双击后打不开,提示来自身份不明的开发者或者提示已损坏,解决办法如下&#…

mac过热_如何阻止Mac过热

mac过热 sergey causelove/Shutterstock.com sergey causelove / Shutterstock.com An overheating Mac is loud, hot to the touch, and often slow or unresponsive. Heat is notoriously bad for computer hardware, so keeping things cool might help prolong the life o…

了不起的全能MAC系统监测工具iStat Menus 5下载

iStat Menus 5 是一款由软件开发商 Bjango 制作的 System Monitor (工具,也是笔者电脑里的必装应用之一,它能让用户最快速、最直观地了解到几乎各硬件所有的运行状态,其中包括:CPU 中央处理器、GPU 图形处理器、Memory…

iStat Menus ——mac上显示网速的软件下载地址及注册码

在mac上显示网速的软件——iStat Menus 5: https://bjango.com/mac/istatmenus/ 注册码: Email: 982092332qq.com SN: GAWAE-FCWQ3-P8NYB-C7GF7-NEDRT-Q5DTB-MFZG6-6NEQC-CRMUD-8MZ2K-66SRB-SU8EW-EDLZ9-TGH3S-8SGA 「注册码源于:http://www.pc6.com/mac/111587.html」

iStat Menus 6.51 mac中文版

iStat Menus for mac是一款Mac OS电脑硬件信息检测软件,安装完成后它位于“系统偏好设定”的应用程序面板,让您从选单列监测系统的各项丰富资讯,又不会占用使用者太大的桌面空间,提供的信息包括 CPU 使用情形、内存用量、硬盘使用情形、网络传…

iStat Menus 6 for Mac中文破解版激活方法无需激活码

iStat Menus 6 Mac 中文破解版是Mac OS平台上十分优秀的一款系统与硬件监控软件,通过istat menus for mac 我们可以实时掌握自己的Mac电脑情况,可以查看硬件温度、查看即时网速、显示CPU使用率等等,非常实用。小编现为大家带来istat menus ma…

istat menus 6

下载地址 安装之后,点击左下角的激活按钮,输入激活信息 Email: 982092332qq.com SN: GAWAE-FCWQ3-P8NYB-C7GF7-NEDRT-Q5DTB-MFZG6-6NEQC-CRMUD-8MZ2K-66SRB-SU8EW-EDLZ9-TGH3S-8SGA 就这样吧

Docker技术文档

Docker技术文档 名词解释什么是虚拟化技术?什么是Docker?Linux容器技术如何理解Docker?Docker在开发和运维中的优势Docker与虚拟机比较Docker不足 总结 Docker的核心概念和安装Docker三大核心概念Docker镜像Docker容器Docker仓库Docker引擎Docker架构 安…