- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 例15 汉诺塔问题 据说在约十九世纪末欧洲的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆上自上而下、由小到大顺序串着由 64 个圆盘构成的塔。 游戏的目的是将最左边A杆上的圆盘,借助最右边的C杆,全部移到中间的B杆上,条件是一次仅能移动一个盘,且不允许大盘放在小盘的上面。 64 片 初始杆 中间杆 目的杆 1 n 6 函数的递归调用 * 第1步,将问题简化。假设 A杆 上只有 2 个圆盘,即汉诺塔有 2 层,N=2。 A杆 C杆 B杆 移动方法:1. 将上面小片移到 C杆 上。 2. 将下面的大片由 A杆 移到 B杆 上。 3. 将 C杆 上的小片移到 B杆 上。 分析: 对A杆上的全部N个圆盘从小到大顺序编号,最小的圆盘为1号,次之为2号……则最下面的圆盘的编号为 N。 6 函数的递归调用 * A杆 C杆 B杆 第2步,对于一个有N(N1)个圆盘的汉诺塔,将N个圆盘分为两部分:上面的N-1个圆盘和最下面的 N号圆盘。将“上面的N-1个圆盘”看成一个整体。 第3步,为解决 N 个圆盘的汉诺塔,可按如下方式进行操作: ① 将A杆上面的N-1个盘子,借助B杆,移到C杆上; ② 将 A杆 上剩下的 N号 盘子移到 B杆 上; ③ 将 C杆 上的 N-1个 盘子,借助A杆,移到B杆上。 6 函数的递归调用 * 整理分析结果:把第1步中化简问题的条件作为递归 结束条件,将第3步分析得到的算法作为递归算法。 定义函数movedisc( n,fromneedle,toneedle,usingneedle)。 将 fromneedle 杆上的 N 个圆盘,借助 usingneedle 杆,移动到 toneedle 杆上。 6 函数的递归调用 * 移动N个圆盘的递归算法描述如下: movedisc ( n,fromneedle,toneedle,usingneedle ) { if ( n==1 ) 将 n 号圆盘从 fromneedle 上移到 toneedle; else { ① movedisc ( n-1,fromneedle,usingneedle,toneedle ) ② 将 n 号圆盘从 fromneedle 上移到 toneedle; ③ movedisc ( n-1,usingneedle,toneedle,fromneedle ) } } 6 函数的递归调用 * 程序 int i=0; /* 移动圆盘数量计数器 */ int main( ) { unsigned n; scanf (%d, n); movedisc ( n,’a’,’b’,’c’); /* 将A上的N个圆盘借助C将移动到B上 */ printf( \t Total: %d\n, i ); return 0; } void movedisc ( n, fromneedle, toneedle, usingneedle ) unsigned n; char fromneedle, toneedle, usingneedle; { if ( n == 1 ) printf(%2d-(%2d): %c == %c\n,++i, n,fromneedle,toneedle); else { movedisc ( n-1, fromneedle, usingneedle, toneedle ); printf(%2d-(%2d): %c == %c\n,++i, n,fromneedle,toneedle); movedisc ( n-1, usingneedle, toneedle, fromneedle ); } } 6 函数的递归调用 * 程序执行过程 当N=3时,程序递归调用的完整执行过程 在main函数中 递归调用第一层 递归调用第二层 递归调用第三层 递归 递归 ┎────→ move(1,a,b,c) ─→ 输出:1-(1):a==b ┃ ←─────── 返回递归第二层 ┃ 输出:2-(2):a==c 调用 ┃ move(1,b,c,a) ─→ 输出:3-(1):b==c ┎
您可能关注的文档
- AudiA4_ESP电子稳定程序.ppt
- B2药物代谢动力学.ppt
- B101电工技术实验课件.ppt
- Authorware-动画与交互实现.ppt
- bd施工图审查范围.doc
- AVT相机调试说明手册.docx
- A卷16年已测试.docx
- A区地下车库顶板防水施工方案.doc
- B3 刚体定轴转动.ppt
- bilibili高级弹幕初阶教程.doc
- 8 黄山奇石(第二课时)课件(共22张PPT).pptx
- 22《纸船和风筝》教学课件(共31张PPT).pptx
- 17 松鼠 课件(共23张PPT).pptx
- 23《海底世界》课件(共28张PPT).pptx
- 21《大自然的声音》课件(共18张PPT).pptx
- 第12课《词四首——江城子 密州出猎》课件 2025—2026学年统编版语文九年级下册.pptx
- 第2课《济南的冬天》课件(共42张PPT) 2024—2025学年统编版语文七年级上册.pptx
- 17 跳水 第二课时 课件(共18张PPT).pptx
- 第六单元课外古诗词诵读《过松源晨炊漆公、约客》课件 统编版语文七年级下册.pptx
- 统编版六年级语文上册 22《文言文二则》课件(共27张PPT).pptx
最近下载
- 【应急预案】消防事故应急预案(范文).docx VIP
- Canon-Pachelbels Canon 高清钢琴谱五线谱.pdf VIP
- 瞻对工布朗结在康区兴起探析.doc VIP
- 2021年湖北汽车工业学院813固体物理考研真题.pdf VIP
- 人教版八年级上册历史期末模拟考试试卷及答案.doc VIP
- 化妆品喷头泵头类包材质量标准.doc VIP
- 高性能外墙保温系统施工技术及效果评估.docx VIP
- 湖北汽车工业学院 固体物理B卷 2021年考研专业课真题.pdf VIP
- 2025年广西公需科目第三套答案.docx VIP
- 2025-2030中国综合能源服务行业市场深度调研及发展趋势与投资前景研究报告.docx
原创力文档


文档评论(0)