- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第11讲 算法设计与分析 算法设计 通常求解一个问题可能会有多种算法可供选择,选择的主要标准是算法的正确性、可靠性、简单性和易理解性。其次是算法所需要的存储空间少和执行更快等因素。 递归算法 一个直接或间接地调用自身的算法称为递归算法,一个直接或间接地调用自身的函数称为递归函数。 在算法设计中,使用递归技术往往能使函数的定义和算法的描述简捷并且便于理解。 一般递归具有如下的形式: if (递归结束条件) { /*递归结束条件成立,结束递归调用 */ 递归结束部分; } else { /*递归结束条件不成立,继续进行递归调用 */ 递归调用部分; } 或 if (递归调用条件) { /* 递归调用条件成立,继续进行递归调用 */ 递归调用部分; } [else { /* 递归调用条件不成立,结束递归调用 */ 递归结束部分; }] 例:用递归求阶乘n!。 阶乘可用迭代表示如下: int Factorial(int n) // 操作结果: 用递归求阶乘n! { if (n 0) { // 递归条件成立 return n * Factorial( n - 1); // 递归调用 } else { // 递归条件不成立 return 1; // 递归结束 } } 例:Fibonacci数列递归算法。 无究数列:0, 1, 1, 2, 3, 5, 8, 13, …,称为Fibonacci数列,可以迭代定义为: int Fibonacci(int n) // 操作结果: 返回Fibonacci数列的第n项 { if (n == 0) { // 递归结束条件成立 return 0; // 终止递归调用 } else if (n == 1) { // 递归结束条件成立 return 1; // 终止递归调用 } else { // 递归结束条件不成立 return Fibonacci(n - 1) + Fibonacci(n - 2); // 递归调用 } } 分治算法 分治算法与软件设计的模块化方法类似。为了解决一个大的问题,将一个规模为n的问题分解为规模较小的子问题,这些子问题互相独立并且和原问题相同。分别解这些子问题,最后将将各个子问题的解合并得到原问题的解。 子问题通常与原问题相似,可以递归地使用分治策略来解决。 。 例:Hanoi塔问题 传说在古代印度的贝拿勒圣庙里,安装着三根插至黄铜板上的宝石针,印度主神梵天在其中一根针上从下到上由大到小的顺序放64片金圆盘,称为梵塔,然后要僧侣轮流值班把这些金圆盘移到另一根针上,移动时必须遵守如下规则: (1)每次只能移动一个盘片; (2)任何时候大盘片不能压在小盘片之上; (3)盘片只允许套在三根针中的某一根上。 这位印度主神号称如果这64片盘全部移到另一根针上时,世界在一声霹雳中毁灭,Hanoi塔问题又称“世界末日”问题。下图为3阶Hanoi塔的初始情况。 于n阶Hanoi塔问题Hanoi(n, a, b, c),当n=0时,没盘子可供移动,什么也不做;当n=1时,可直接将1号盘子从a轴移动到c轴上;当n=2时,可先将2号盘子移动到b轴,再将1号盘子移动到c轴,最后将2号盘子移动到c轴;对于一般n0的一般情况可采用如下分治策略进行移动 (1)将1至n-1号盘从 a 轴移动至 b 轴,可递归求解Hanoi(n-1, a, c, b); (2)将 n号盘从 a 轴移动至 c 轴; (3)将1至n-1号盘从b轴移动至c轴,可递归求解 Hanoi(n-1, b, a, c)。 void Hanoi(int n,char a,char b,char c) // 操作结果: 将a塔座上的直径由小到大,至上而下编辑为 // 1至n的n个盘子按规则移到塔座c上,塔座b可用作 // 辅助塔座 { if (n 0) { // 递归条件成立 Hanoi(n - 1, a, c, b); // 将a塔座上编号为1至 // n-1的圆盘移到b塔座,c作辅助塔座 cout 编号为 n 的盘子从 a 塔座移到 c 塔座 endl; // 将编号为n的圆盘从a塔座移到c塔座 Hanoi(n - 1, b, a, c); // 将b塔座上编号为1至 // n-1的圆盘移到c塔座,a作辅助塔座 } } 算法分析 递归函数包含递归结束
您可能关注的文档
- 控制电机第2版李光友电子课件总结幻灯片.ppt
- 学前儿童科学教育教学课件作者郦燕君教学课件第四单元幻灯片.ppt
- 数据结构二版杨枨数据结构第四章节栈和队列课件幻灯片.ppt
- 学前儿童科学教育教学课件作者郦燕君教学课件第四单元课件幻灯片.ppt
- 学前儿童科学教育教学课件作者郦燕君教学课件第五单元幻灯片.ppt
- 学前儿童科学教育教学课件作者郦燕君教学课件第五单元课件幻灯片.ppt
- 数据结构复习15201210数据结构考研复习1201210章节幻灯片.ppt
- 学前儿童科学教育教学课件作者郦燕君教学课件第一单元幻灯片.ppt
- 学前儿童科学教育教学课件作者郦燕君教学课件第一单元课件幻灯片.ppt
- 数据结构复习15201210数据结构考研复习2201210章节幻灯片.ppt
最近下载
- 八年级物理上册《透镜》练习题(含答案解析) .pdf
- 插花与花艺设计(花道——插花技艺养成)智慧树知到期末考试答案章节答案2024年云南林业职业技术学院.docx
- 四书精读教学-《四书》精读课堂笔记.docx VIP
- 2022年青岛版五四制三年级上册数学典型应用题105道.pdf
- 国旗下讲话:远离垃圾食品,享受健康生活.doc
- 幼儿园课件:第八章--学前儿童的情绪和情感.pptx
- 部编版语文九年级下册课内外古诗词(共17首)阅读理解题背诵-中考考点汇总(全册-含答案).doc VIP
- 第一章立体构成概述 .ppt
- 2024年河北省继续医学教育公共选修课参考答案.pdf VIP
- 《立体构成》课件 第一章 立体构成概述.ppt
文档评论(0)