汉诺塔 - 递归算法
汉诺塔游戏规则描述:
有三根杆子star,station,end。star杆上有 N (>=1)个方块,方块尺寸由下(1)到上(n)依次变小。要求按下列规则将所有圆盘移至 end 杆:
每次只能移动一个圆盘;
大盘不能叠在小盘上面。
解题思路:
1、如果只有方块1,则把方块1直接从star挪到end;
2、如果方块1上面有其他(n-1)个方块压着,则:
2-1:先把上面的(n-1)方块从star挪到station;(此时n-1个方块体在station上)
2-2:把1从star挪到end;
2-3:此时,以station作为起始的柱子,star作为中转柱子,重复上述步骤:
2-3-a. 将(n-2)个方块先挪到star上;
2-3-b. 再将第n-1个方块挪到end上;
2-3-c. 重复上述步骤
//定义汉诺塔函数,其中有4个参数
//第一个参数是汉诺塔盘子的层数
//第2-4个参数代表汉诺塔的3根柱子
//起始柱子(star)、中转柱子(station)、目标柱子(end)
//要求把方块从起始柱子移动到目标柱子
void Hano(int n,char star, char station, char end)
{if (n==1){printf("Move from %c to %c\n", star,end);}else{Hano(n-1, star, end, station);Hano(1, star, station, end);Hano(n-1, station, star, end);}
}#include <stdio.h>
int main()
{char A='A';char B='B';char C='C';int n = 0;scanf("%d",&n);Hano(n,A,B,C);return 0;
}
运行结果:
程序运行示意:
汉诺塔 - 递归算法相关推荐
- 汉诺塔递归算法进阶_进阶python 1递归
汉诺塔递归算法进阶 When something is specified in terms of itself, it is called recursion. The recursion give ...
- python汉诺塔_汉诺塔递归算法/搬金盘的婆罗门 - Python实现
汉诺塔递归算法/搬金盘的婆罗门 - Python实现 版权声明 本文节选自作者本人的图书<Python编程基础及应用>,高等教育出版社.本文可以在互联网上自由转载,但必须:注明出处(作者: ...
- 汉诺塔递归算法/搬金盘的婆罗门 - Python实现
汉诺塔递归算法/搬金盘的婆罗门 - Python实现 本文引用自作者编写的下述图书; 本文允许以个人学习.教学等目的引用.讲授或转载,但需要注明原作者"海洋饼干叔 叔":本文不允许 ...
- 汉诺塔-递归算法深入理解
汉诺塔算法就3个步骤: 第一,把a上的n-1个盘通过c移动到b: 第二,把a上的最下面的盘移到c: 第三,因为n-1个盘全在b上了. 所以把b当做a重复以上步骤就好了.不过,思考过程还是很痛苦的,难以 ...
- python汉诺塔递归算法_Python文摘:汉诺塔问题与递归算法
历史传说: 在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针.印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔.不论白天黑夜 ...
- python汉诺塔递归算法流程图,python实现汉诺塔递归算法经典案例
Python汉诺塔递归问题 python请用递归算法编程解决汉诺塔问题 在线等 关于python递归函数实现汉诺塔 def move(n,a,b,c): #1 if n==1: #2 print(a, ...
- python汉诺塔递归算法流程图_python实现汉诺塔的图解递归算法
一.起源: 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小 ...
- python汉诺塔递归算法流程图_详解汉诺塔Python递归程序
学习递归时,很多小伙伴对汉诺塔的递归算法非常疑惑,不清楚那么复杂的移动过程,为何用四五行代码就给解决了.汉诺塔问题:有三根柱子A,B,C.A柱上有若干碟子,每次移动一块碟子,小的只能叠在大的上面,把所 ...
- 对汉诺塔递归算法的理解(图解,附完整代码实现)
前情提要: 首先说一下汉诺塔游戏的规则:如下图所示,有三个柱子A,B,C,我们要做的是把A柱的所有圆盘,全部转移到C柱上,转移时遵循的规则如下: 1.每次只能移动一个圆盘 2.所有的大圆盘必须在小圆盘 ...
最新文章
- jquery validate 详解一
- 清华大学:2021元宇宙研究报告!
- 怎么调整字段长短_木北造型:空气刘海卷发筒怎么用 木北造型告诉您
- QML与Qt C++ 交互机制详解
- linux下简单的邮件配置
- 昨天一冲动,给头儿说留所了。。。
- tfs php,TFS的原理及应用
- cache的替换策略
- CIO40:家电巨头数字化运营历程(IT-DT-OT)
- 【计算1970年到任意一个年月距离有多久】
- 任务栏微信图标显示为白框,解决办法
- np.cosh没有分配_JavaScript中带有示例的Math.cosh()方法
- 新建几个普通用户wukong,wuneng,wujing,他们都属于xiyouji组的成员,其中wujing没有和系统交互的shell~
- 【luogu P3674】 小清新人渣的本愿
- Springboot 小巧简便的限流器使用 RateLimiter
- java读取配置文件信息生成Map对象
- HiPQTools工具HiPQStitchingTool标定(二)
- Prodigal基因预测
- Python学习之numpy生成矩阵基础用法
- Vue.js - Font Awesome字体图标的使用详解(vue-fontawesome库)