汉诺塔-递归算法深入理解
汉诺塔算法就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
汉诺塔-递归算法深入理解相关推荐
- 对汉诺塔递归算法的理解(图解,附完整代码实现)
前情提要: 首先说一下汉诺塔游戏的规则:如下图所示,有三个柱子A,B,C,我们要做的是把A柱的所有圆盘,全部转移到C柱上,转移时遵循的规则如下: 1.每次只能移动一个圆盘 2.所有的大圆盘必须在小圆盘 ...
- 汉诺塔递归算法进阶_进阶python 1递归
汉诺塔递归算法进阶 When something is specified in terms of itself, it is called recursion. The recursion give ...
- python汉诺塔_汉诺塔递归算法/搬金盘的婆罗门 - Python实现
汉诺塔递归算法/搬金盘的婆罗门 - Python实现 版权声明 本文节选自作者本人的图书<Python编程基础及应用>,高等教育出版社.本文可以在互联网上自由转载,但必须:注明出处(作者: ...
- 汉诺塔递归算法/搬金盘的婆罗门 - Python实现
汉诺塔递归算法/搬金盘的婆罗门 - Python实现 本文引用自作者编写的下述图书; 本文允许以个人学习.教学等目的引用.讲授或转载,但需要注明原作者"海洋饼干叔 叔":本文不允许 ...
- 汉诺塔递归算法理解及实现
汉诺塔问题描述: A.B.C 三个桌子,其中A桌子上放了几个大小不同的盘子,盘子的排列顺序为: 从上到下,依次从小到大递增:现要求把这些盘子从 A 桌子上移动到 C 桌子上,盘子移动时有一点要求:每次 ...
- python汉诺塔递归算法流程图,python实现汉诺塔递归算法经典案例
Python汉诺塔递归问题 python请用递归算法编程解决汉诺塔问题 在线等 关于python递归函数实现汉诺塔 def move(n,a,b,c): #1 if n==1: #2 print(a, ...
- python汉诺塔递归算法流程图_详解汉诺塔Python递归程序
学习递归时,很多小伙伴对汉诺塔的递归算法非常疑惑,不清楚那么复杂的移动过程,为何用四五行代码就给解决了.汉诺塔问题:有三根柱子A,B,C.A柱上有若干碟子,每次移动一块碟子,小的只能叠在大的上面,把所 ...
- python汉诺塔递归算法_Python文摘:汉诺塔问题与递归算法
历史传说: 在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针.印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔.不论白天黑夜 ...
- 我对汉诺塔问题的理解
1.代码的实现 这一段代码非常简单,网上一大堆.但真正理解起来,却没这么简单.所以接下来我想以我的方式,解释一下分治的过程. 2.问题重述 假设现在一共有 n n n个圆盘在圆柱 A A A上 ...
最新文章
- Struts2漏洞为互联网带来严重安全风险
- python 回文链表
- 创建用户,并加入sudo组
- 华为android系统最新版,谷歌再放大招截胡鸿蒙系统!发布最新版安卓系统:国产手机抢先升级...
- android Frame-By-Frame Animations(一帧一帧地播放动画)的使用
- SpringMVC实现文件上传
- ArcGIS 9在WIN XP 和 WIN 2003 系统下安装部分动态库不能注册
- idea redis 插件_Redis客户端RDM收费后,还有那些开源的替代品呢?
- 第七次作业 numpy统计分布显示
- 苹果鼠标驱动_一款鼠标让工作更高效——咪鼠S2智能语音鼠标测评
- android调用webservice,Android开发调用WebService的方法示例
- 计算机网络中期论文,计算机 毕业论文(设计)中期报告
- 关于Sentinel-2快速查询图幅号——使用MGRS_100kmSQ_ID_File_Geodatabase快速查询
- 购买vSphere虚拟化主机的配置建议清单
- 鲁大师怎么查看cpu风扇转速|用鲁大师查看cpu风扇转速的方法
- 发改委印发《关于促进分享经济发展的指导性意见》
- C++ 模板进阶(模板的特化)
- 算术编码原理及其python实现
- python解复杂方程_Python 解方程的三种方法
- CES归来---话说AR眼镜
热门文章
- 决赛评审招募 | 学生创意能有多不羁?快来网易看决赛!
- 常用命令——ls tree 文件类型 目录结构 netstat
- Python3 Selenium自动化web测试 == 第三节 常用WebDriver API使用示例上(24个API)
- 【转】C++调用Matlab的.m文件
- CF 277.5 B.BerSU Ball 二分图的最大匹配 模版题
- 中文乱码问题的一些总结
- 猪的诱惑(2005-12-25 15:45:05)(新浪)
- Report Service 中数据类型的问题
- 【opencv系列02】OpenCV4.X图像读取与显示
- const debug = require(‘debug‘)(‘cnpm‘)