直接上图开干: 1个盘子直接从A放到C(递归出口),大于1个不管你有多少盘子,我始终把你当成两个盘子,即第n个和第(n-1)个,那就是把(n-1)放到B,把n放到C,再把(n-1)放到C,递归思想大功告成;

直接上代码:

void Prinmove(int num,char a,char b)
{printf("%d盘:%c->%c\n",num,a,b);
}void Move(int num,char A,char B,char C) //三根柱子 A,B,C
{if (num == 1) //当n=1,直接从A->c{Prinmove(num,A, C);return;}elseMove(num - 1, A,C,B);//将(n-1)放在B柱子上Prinmove(num,A, C);//将第n个放在C上Move(num - 1, B, A, C);//再将(n-1)个从B放到C
}int main()
{int num = 0;printf("请输盘数\n");scanf("%d", &num);Move(num,'A','B','C');system("pause");return 0;
}

递归不要太纠结每一个函数运行的过程,太复杂容易乱,要从递归本质出发,将其分解成与原问题相似的小问题来解决,比如汉诺塔,始终是n和(n-1)的事儿,将出口找好,整体分解一次,依次递归;

汉诺塔——老夫不管什么分析不分析,直接粗暴相关推荐

  1. 汉诺塔问题【算法设计与分析】

    实验内容: 分别计算 4阶/6阶汉诺塔问题,统计各自需要多少移动步数 问题分析: 可以把n个盘子抽象为两个盘子,上面"一个"由1~n-1号组成,下面的"一个"由 ...

  2. 汉诺塔c语言源程序步骤,汉诺塔问题的算法分析及C语言演示程序的实现

    摘要:该文对经典的"汉诺塔"问题进行了详细的分析,并用C语言实现.通过问题的具体实现,使学习者了解问题的全过程,推广到一般. 关键词:汉诺塔;递归;C语言 中图分类号:TP301. ...

  3. 从“递归结构”到解汉诺塔问题的求解

    解决递归问题的关键在于寻找递归的结构. 寻找一个可递归问题的递归结构,不仅可以直观地转换为程序语言,进行问题的求解,而且也为我们人脑对问题的求解提供思路,比如3阶的汉诺塔,我们还可简单设计方案,倘若四 ...

  4. 算法笔记 —— 汉诺塔详解

    文章目录 一.问题来源 二.小游戏体验 三.思路分析 四. 程序实现 一.问题来源 相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏.该游戏是在一块铜板装置上,有三根杆(编号X.Y.Z),在 ...

  5. 汉诺塔的非递归实现(借助堆栈模拟递归)

    汉诺塔的非递归实现 借助堆栈以非递归(循环)方式求解汉诺塔的问题(n,a,b,c).即将n个盘子从起始柱(标记为"a")通过借助柱(标记为"b")移动到目标杜( ...

  6. 算法 - 递归实现汉诺塔(The Tower of Hanoi)

    目录 引言: 分析: 分析两片汉诺塔的迁移过程: 分析三片汉诺塔的迁移过程: 代码实现: 递归出口: 递归过程: 完整程序代码: 运行结果: 参考资料:​​​​​ 引言: 今天接触到了一个非常有意思的 ...

  7. C语言实现汉诺塔问题(保姆式讲解)

    前言: 大家好,又是再一次分享文章,我十分感谢各位能够点开这篇花费我颇多时间才解决的汉诺塔问题,接下来我就要分享一下自己的所思所想,希望能给各位带来一些不一样的收获吧. 提醒: 汉诺塔问题的本质是函数 ...

  8. 汉诺塔python代码解释_python实现汉诺塔算法

    题目: 汉诺塔给出最优解,如果对汉诺塔的定义有不了解,请翻看数据结构教材. 除了最基本的之外,还有一题,给定一个数组,arr=[2,3,1,2,3],其含义是这是一个有5个圆盘的汉诺塔,每一个数字代表 ...

  9. 汉诺塔算法python_python实现汉诺塔算法

    题目: 汉诺塔给出最优解,如果对汉诺塔的定义有不了解,请翻看数据结构教材. 除了最基本的之外,还有一题,给定一个数组,arr=[2,3,1,2,3],其含义是这是一个有5个圆盘的汉诺塔,每一个数字代表 ...

最新文章

  1. 提取操作系统的基本信息(内核、系统版本、网络地址等)
  2. ML之xgboost:利用xgboost算法(结合sklearn)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测)
  3. Android中使用GridView实现标签效果源码
  4. 左神算法:反转单向和双向链表(Java版)
  5. WebService SOAP、Restful和HTTP(post/get)请求区别
  6. git add * 提示warning: LF will be replaced by CRLF in 解决办法
  7. IntelliJ IDEA 学习笔记
  8. Path Sum leetcode java
  9. “你在哪里上班?”“呵呵呵!”
  10. UI设计素材字体|三明治3D文字效果– 3个角度
  11. 理解 Memory barrier(内存屏障)【转】
  12. NodeJs从零构建代理ip池(一)介绍
  13. windows10 安装 rancher desktop及测试案例
  14. 普元云计算-你适合微服务么:实施微服务的4个先决条件和重点工作
  15. 最简单的Qt配置opencv教程
  16. oracle建表默认now,oracle建表脚本当中使用默认值_oracle
  17. px4讲解(一)历史起源
  18. HDWiki的兼容性问题
  19. ECharts中使用tooltip时鼠标移入抖动问题
  20. Android点9图机制及在聊天气泡中的应用

热门文章

  1. openstack部署过程4
  2. sketch html尺寸,SketchSize一键生成多尺寸,为何你的设计效率如此之高?
  3. Latex表示随机变量相互独立,不独立
  4. 【uni-app】App实现二维码分享图合成(支持单张或多张)
  5. [洛谷P3262]战争调度
  6. java ee中如何编译,【Javaweb】于Eclipse for JavaEE中编译一个项目Tomcat下的webap
  7. 天价月饼被套上“紧箍咒”,499元成天花板?
  8. 计算机专业网名英语翻译,个性网-网名-各种英文网名带翻译*英文网名
  9. 推荐系统 | 威尔逊区间法
  10. 机器人瓦力 配乐_机器人瓦力中的插曲是什么?