全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

c++ 汉诺塔递归代码 c++汉诺塔算法图解

汉诺塔问题通过递归实现,将n个盘子从A移动到C,需借助B辅助。首先将前n-1个盘子从A移到B,再将最大盘从A移到C,最后将n-1个盘子从B移到C。每次移动遵循大盘不压小盘原则。递归终止条件为只剩一个盘子时直接移动。算法体现分治思想,通过不断分解问题规模直至可直接求解。

汉诺塔问题是递归算法的经典例子,通过将问题分解为更小的子问题来解决。下面给出 C++ 实现代码,并附上算法执行过程的图解说明。

汉诺塔问题描述

有三根柱子 A、B、C,A 上有 n 个大小不同的圆盘,按从小到大的顺序叠放(大盘在下)。目标是把所有圆盘从 A 移动到 C,移动过程中遵守以下规则:

  • 一次只能移动一个圆盘
  • 每次移动的是某根柱子最上面的圆盘
  • 大盘不能放在小盘之上

C++ 递归实现代码

#include 
using namespace std;

void hanoi(int n, char from, char to, char aux) { if (n == 1) { cout << "将盘子 " << n << " 从 " << from << " 移动到 " << to << endl; return; } hanoi(n - 1, from, aux, to); // 先把上面 n-1 个移到辅助柱 cout << "将盘子 " << n << " 从 " << from << " 移动到 " << to << endl; hanoi(n - 1, aux, to, from); // 再把 n-1 个从辅助柱移到目标柱 }

int main() { int n; cout << "输入盘子数量:"; cin >> n; hanoi(n, 'A', 'C', 'B'); return 0; }

输出示例(n=3):

将盘子 1 从 A 移动到 C
将盘子 2 从 A 移动到 B
将盘子 1 从 C 移动到 B
将盘子 3 从 A 移动到 C
将盘子 1 从 B 移动到 A
将盘子 2 从 B 移动到 C
将盘子 1 从 A 移动到 C

算法图解与执行逻辑

以 n = 3 为例,三步递归策略如下:

第1步:将前2个盘子从 A → B(借助 C)

  • 把最上面两个盘子看作一个整体,先移到辅助柱 B
  • 这需要递归调用 hanoi(2, A, B, C)

第2步:将最大盘子从 A → C

  • 此时 A 上只剩最大盘(第3个),直接移动到目标柱 C

第3步:将2个盘子从 B → C(借助 A)

  • 递归地把 B 上的两个盘子移到 C,完成最终目标

整个过程体现“分治”思想:要移动 n 层塔,先移上面 n-1 层让路,再移动底层,最后把 n-1 层盖上去。

递归调用结构图(简化表示)

hanoi(3, A→C)
├─ hanoi(2, A→B)
│  ├─ hanoi(1, A→C): A→C
│  ├─ A→B
│  └─ hanoi(1, C→B): C→B
├─ A→C
└─ hanoi(2, B→C)
   ├─ hanoi(1, B→A): B→A
   ├─ B→C
   └─ hanoi(1, A→C): A→C

每层递归都在缩小问题规模,直到只剩一个盘子时直接处理,这是递归终止条件。

基本上就这些。理解关键在于相信递归能处理好 n-1 的情况,你只需专注当前一层的操作逻辑。不复杂但容易忽略细节。


# ai  # c++  # ios  # stream  # 递归  # 算法  # 移到  # 只剩  # 汉诺  # 的是  # 这是  # 放在  # 都在  # 结构图  # 只需 


相关文章: 网站微信制作软件,如何制作微信链接?  建站之星后台密码遗忘如何找回?  上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?  建站之星好吗?新手能否轻松上手建站?  建站之星如何助力企业快速打造五合一网站?  在线制作视频网站免费,都有哪些好的动漫网站?  建站三合一如何选?哪家性价比更高?  如何通过西部建站助手安装IIS服务器?  如何快速完成中国万网建站详细流程?  香港服务器如何优化才能显著提升网站加载速度?  建站之星3.0如何解决常见操作问题?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  c++怎么用jemalloc c++替换默认内存分配器【性能】  魔方云NAT建站如何实现端口转发?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  建站主机如何选?性能与价格怎样平衡?  高防服务器如何保障网站安全无虞?  济南网站制作的价格,历城一职专官方网站?  如何通过万网虚拟主机快速搭建网站?  建设网站制作价格,怎样建立自己的公司网站?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  建站之星微信建站一键生成小程序+多端营销系统  建站主机服务器选购指南:轻量应用与VPS配置解析  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  C++用Dijkstra(迪杰斯特拉)算法求最短路径  如何通过cPanel快速搭建网站?  用v-html解决Vue.js渲染中html标签不被解析的问题  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  高端网站建设与定制开发一站式解决方案 中企动力  建站之星收费标准详解:套餐费用及年费价格表一览  图册素材网站设计制作软件,图册的导出方式有几种?  Bpmn 2.0的XML文件怎么画流程图  青岛网站建设如何选择本地服务器?  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  高防服务器:AI智能防御DDoS攻击与数据安全保障  云南网站制作公司有哪些,云南最好的招聘网站是哪个?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  如何快速生成高效建站系统源代码?  如何确保西部建站助手FTP传输的安全性?  教育培训网站制作流程,请问edu教育网站的域名怎么申请?  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  盘锦网站制作公司,盘锦大洼有多少5G网站?  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  建站主机SSH密钥生成步骤及常见问题解答?  网站制作说明怎么写,简述网页设计的流程并说明原因?  如何通过FTP空间快速搭建安全高效网站?  如何快速选择适合个人网站的云服务器配置? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。