1 / 2
文档名称:

C汉诺塔问题.doc

格式:doc   大小:30KB   页数:2页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C汉诺塔问题.doc

上传人:mh900965 2018/3/10 文件大小:30 KB

下载得到文件列表

C汉诺塔问题.doc

文档介绍

文档介绍:C语言汉诺塔问题
递归算法的出发点不是由初始条件出发,而是把出发点放在求解的目标上,从所求的未知项出发逐次调用本身的求解过程,直到递归的边界(即初始条件)。
汉诺塔问题的重点是分析移动的规则,找到规律和边界条件。
若需要将n个盘子从A移动到C就需要
(1)将n-1个盘子从A移动到B;
(2)再将第n个从A移动到C;
(3)再将n-1个盘子再从B移动到C,这样就可以完成了。如果n!=1,则需要递归调用函数,将A上的其他盘子按照以上的三步继续移动,直到达到边界条件n=1为止。
思路清楚了,程序就好理解了。程序中的关键是分析好每次调用移动函数时具体的参数和对应的A、B、C塔的对应的关系。下面来以实际的例子对照程序进行说明。
①move(int n,int x,int y,int z)
②{
③ if (n==1)
④ printf("%c-->%c\n",x,z);
⑤ else
⑥{
⑦ move(n-1,x,z,y);
printf("%c-->%c\n",x,z);
move(n-1,y,x,z);
}
}
比如有4个盘子,现在全部放在A塔上。盘子根据编号为1、2、3、4依次半径曾大。现在要将4个盘子移动到C上,并且是按原顺序罗列。首先我们考虑如何才可以将4号移动到C呢?就要以B为中介,首先将上面的三个移动到B。此步的操作也就是程序中的①开始调入move函数(首次调用记为一),当然现在的n=4,然后判断即③n!=1所以不执行④而是到⑤再次调用move函数(记为二)考虑如何将3个盘移动到B的方法。此处是递归的调用所以又一次回到①开始调入move
函数,不过对应的参数发生了变化,因为这次要考虑的不是从A移动4个盘到C,而是要考虑从A如何移动移动3个盘到B。因为n=3,故不可以直接移动要借助C做中介,先考虑将两个移动到C的方法,故再一次到⑤再一次递归调用mo

最近更新

2021-2022学年浙江省宁波市南三县八年级(上)期.. 23页

班组长安全生产负责制 30页

2021年当代科学技术前沿知识考试试题和答案 23页

2022-2023学年北师大版七年级数学上册《第1章.. 10页

低功耗模数转换电路研究的任务书 2页

2022七年级下册生物课本第一章知识点总结 5页

腹腔镜肾部分切除手术技巧课件 29页

2022年人教部编版六年级上册语文第五单元测试.. 6页

2022年春季一年级劳动教育教案 21页

2022年甘肃省兰州市中考地理试题及答案解析 18页

2022年高考一轮专题复习全国通用28湿地的开发.. 9页

传教士与明清之际的中西医交流的中期报告 1页

头盔磨砂工艺 21页

2023年人教部编版七年级语文上册教学计划5篇 15页

2023年模拟招聘会活动策划书 1 20页

2023年酒店安全生产工作总结模板(四篇) 17页

GE医疗中国推出全面启动基础医疗战略 7页

泵站维修工岗位责任制 27页

沉香救母教学反思 30页

《SQL Server 数据库》教学大纲 10页

《可编程控制技术》课程标准 5页

企业社会责任法律问题研究的任务书 2页

企业知识型员工绩效评价体系研究的任务书 2页

【奥鹏】[吉林大学]吉大20年4月《建筑结构抗震.. 5页

一年级上册数学一课一练第二单元第六课时统计.. 11页

板房和简易工作间安装作业安全交底 32页

三年级上册第三单元作文(通用27篇) 13页

企业并购策略分析——以广告行业为例的中期报.. 2页

东财《财务管理》复习题 6页

脉管系统和神经系统 23页