汉诺塔算法就3个步骤:

第一,把a上的n-1个盘通过c移动到b;

第二,把a上的最下面的盘移到c;

第三,因为n-1个盘全在b上了。

所以把b当做a重复以上步骤就好了。不过,思考过程还是很痛苦的,难以理解。递归中会保存数据的好处在这里又得到体现。

递归算法真的是个神奇的东西,它会自己在栈中记录下以前的数据,可以按照以前的记录返回到起始点。(重点理解递归中局部变量的保存)

汉诺塔代码如下:

#include<stdio.h>void move(int n,char a,char b,char c)
{if(n==1)printf("\t%c->%c\n",a,c);    //当n只有1个的时候直接从a移动到celse{move(n-1,a,c,b);            //第n-1个要从a通过c移动到bprintf("\t%c->%c\n",a,c);move(n-1,b,a,c);            //n-1个移动过来之后b变开始盘,b通过a移动到c,这边很难理解}
}main()
{int n;printf("请输入要移动的块数:");scanf("%d",&n);move(n,'a','b','c');
}

参考:http://www.cnblogs.com/ruofengzhishang/articles/1939444.html

汉诺塔-递归算法深入理解相关推荐

  1. 对汉诺塔递归算法的理解(图解,附完整代码实现)

    前情提要: 首先说一下汉诺塔游戏的规则:如下图所示,有三个柱子A,B,C,我们要做的是把A柱的所有圆盘,全部转移到C柱上,转移时遵循的规则如下: 1.每次只能移动一个圆盘 2.所有的大圆盘必须在小圆盘 ...

  2. 汉诺塔递归算法进阶_进阶python 1递归

    汉诺塔递归算法进阶 When something is specified in terms of itself, it is called recursion. The recursion give ...

  3. python汉诺塔_汉诺塔递归算法/搬金盘的婆罗门 - Python实现

    汉诺塔递归算法/搬金盘的婆罗门 - Python实现 版权声明 本文节选自作者本人的图书<Python编程基础及应用>,高等教育出版社.本文可以在互联网上自由转载,但必须:注明出处(作者: ...

  4. 汉诺塔递归算法/搬金盘的婆罗门 - Python实现

    汉诺塔递归算法/搬金盘的婆罗门 - Python实现 本文引用自作者编写的下述图书; 本文允许以个人学习.教学等目的引用.讲授或转载,但需要注明原作者"海洋饼干叔 叔":本文不允许 ...

  5. 汉诺塔递归算法理解及实现

    汉诺塔问题描述: A.B.C 三个桌子,其中A桌子上放了几个大小不同的盘子,盘子的排列顺序为: 从上到下,依次从小到大递增:现要求把这些盘子从 A 桌子上移动到 C 桌子上,盘子移动时有一点要求:每次 ...

  6. python汉诺塔递归算法流程图,python实现汉诺塔递归算法经典案例

    Python汉诺塔递归问题 python请用递归算法编程解决汉诺塔问题 在线等 关于python递归函数实现汉诺塔 def move(n,a,b,c): #1 if n==1: #2 print(a, ...

  7. python汉诺塔递归算法流程图_详解汉诺塔Python递归程序

    学习递归时,很多小伙伴对汉诺塔的递归算法非常疑惑,不清楚那么复杂的移动过程,为何用四五行代码就给解决了.汉诺塔问题:有三根柱子A,B,C.A柱上有若干碟子,每次移动一块碟子,小的只能叠在大的上面,把所 ...

  8. python汉诺塔递归算法_Python文摘:汉诺塔问题与递归算法

    历史传说: 在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针.印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔.不论白天黑夜 ...

  9. 我对汉诺塔问题的理解

    1.代码的实现   这一段代码非常简单,网上一大堆.但真正理解起来,却没这么简单.所以接下来我想以我的方式,解释一下分治的过程. 2.问题重述   假设现在一共有 n n n个圆盘在圆柱 A A A上 ...

最新文章

  1. Struts2漏洞为互联网带来严重安全风险
  2. python 回文链表
  3. 创建用户,并加入sudo组
  4. 华为android系统最新版,谷歌再放大招截胡鸿蒙系统!发布最新版安卓系统:国产手机抢先升级...
  5. android Frame-By-Frame Animations(一帧一帧地播放动画)的使用
  6. SpringMVC实现文件上传
  7. ArcGIS 9在WIN XP 和 WIN 2003 系统下安装部分动态库不能注册
  8. idea redis 插件_Redis客户端RDM收费后,还有那些开源的替代品呢?
  9. 第七次作业 numpy统计分布显示
  10. 苹果鼠标驱动_一款鼠标让工作更高效——咪鼠S2智能语音鼠标测评
  11. android调用webservice,Android开发调用WebService的方法示例
  12. 计算机网络中期论文,计算机 毕业论文(设计)中期报告
  13. 关于Sentinel-2快速查询图幅号——使用MGRS_100kmSQ_ID_File_Geodatabase快速查询
  14. 购买vSphere虚拟化主机的配置建议清单
  15. 鲁大师怎么查看cpu风扇转速|用鲁大师查看cpu风扇转速的方法
  16. 发改委印发《关于促进分享经济发展的指导性意见》
  17. C++ 模板进阶(模板的特化)
  18. 算术编码原理及其python实现
  19. python解复杂方程_Python 解方程的三种方法
  20. CES归来---话说AR眼镜

热门文章

  1. 决赛评审招募 | 学生创意能有多不羁?快来网易看决赛!
  2. 常用命令——ls tree 文件类型 目录结构 netstat
  3. Python3 Selenium自动化web测试 == 第三节 常用WebDriver API使用示例上(24个API)
  4. 【转】C++调用Matlab的.m文件
  5. CF 277.5 B.BerSU Ball 二分图的最大匹配 模版题
  6. 中文乱码问题的一些总结
  7. 猪的诱惑(2005-12-25 15:45:05)(新浪)
  8. Report Service 中数据类型的问题
  9. 【opencv系列02】OpenCV4.X图像读取与显示
  10. const debug = require(‘debug‘)(‘cnpm‘)