- 1、本文档共56页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第 三 章 递 归 一个递归问题 从前有座山,山上有座庙,庙里有个老和尚讲故事,讲的是 从前有座山,山上有座庙,庙里有个老和尚讲故事,讲的是 从前有座山,山上有座庙,庙里有个老和尚讲故事,讲的是 …… …… 3.1 递归算法实现机制 子程序实现原理 子程序调用的一般形式 值回传方式 子程序调用的内部操作 递归程序实现原理 子程序调用的一般形式 子程序调用的一般形式 值回传方式 实参与形参的两种数据传送方式:值参与变参 变参回传值,有两种方法: 两次值传送方式 按指定类型为变参设置相应的存储空间。执行调用时,实参值传送给变参,返回时变参值传送给实参。 地址传送方式 在内部将变参设置成一个地址,调用时将实参的地址传送给变参。 本章讨论的递归问题对变参采用两次值传送方式。 子程序调用的内部操作 执行调用时: 返回地址进栈,开辟子程序的局部变量空间 为子程序准备数据,即将实参值赋值给形参 指令流转入子程序入口 执行返回操作时: 将变参或函数的值保存到回传变量中 从栈顶取出返回地址 按地址返回 将回传变量中的值传送给相应的变量或位置上 递归程序实现原理 原理:一个递归过程的执行类似于多个子程序 的嵌套调用。 定义:递归过程直接地或间接地调用自己本身 代码。 特征:有递归调用、有递归出口。 特点:设计和分析思路清晰,实现容易,效率 较低。 为了保证递归调用的正确性,需要保存调用点的现场(返回地址、局部变量、被调用函数的参数等),以便正确地返回,并且按先进后出的原则来管理这些信息。 高级语言编译程序是利用栈来实现的。 f(n) f(n?1) f(n?2) f(1) f(0) 计算 4 ! 递归过程图示: 下图中 Pi 代表现场信息,栈元素由现场信息和参数构成 f(4)?4?f(3) f(3)?3?f(2) f(2)?2?f(1) f(1)?1?f(0) f(0)?1 Push(e4) Push(e3) Push(e2) Push(e1) f(4)?4?f(3) f(3) ?3?f(2) f(2) ? 2?f(1) f(1) ?1?f(0) ? 24 ? 6 ?2 ? 1 3.3 递归算法设计 递归设计需满足的要求 递归求解的通用表现形式 递归的几个典型例子 递归设计需满足的要求 可以用递归求解的问题应满足: 问题P的描述涉及规模,即P(size); 规模发生变化后,问题的性质不变; 问题的解决有出口。 递归求解的通用表现形式 Procedure P(参数表) if 递归出口 then 简单操作 else 简单操作 call P 简单操作 endif end P 几个典型例子 简单的0/1背包问题 n阶Hanoi塔问题 棋子移动问题 n个元素的全排列 自然数拆分(正整数拆分) 例3.3 简单的0/1背包问题 背包可容 纳物品的最大质量为m,现有n件物品,质量分别为m1, m2,?, mn,mi均为正整数,要从n件物品中挑选若干件,使放入背包的质量之和正好为m. 简单的0/1背包问题 例:m?20, n?5, (m1, m2, m3, m4, m5)?(3,5,8,9,10) (x1,x2,x3,x4,x5)?(1,0,1,1,0) m?18? m?28? 问题分析 knap(m, n) function knap(m, n) case :m?mn?0: knap ?true :m?mn?0: if n?1 then if knap(m?mn,n?1) ? true then knap ?true
您可能关注的文档
最近下载
- 求职陷阱教学课件.pptx VIP
- 叙事护理案例分享演讲课件-.pptx VIP
- 《播音主持创作基础》对象感.ppt
- 审计学(第11版)秦荣生习题答案.pdf
- 《复变函数与积分变换》(西北工业大学)中国大学MOOC(慕课)章节测验试题(答案).pdf
- 《少数民族传统体育在幼儿园的应用研究》开题报告2800字.docx VIP
- 统编语文教科书三年级下册第七单元教学解读与集体备课.pptx VIP
- 组织行为学(第二版)第四章价值观念.pptx
- CAM软件:Siemens NX CAM二次开发_(4).UGOpenGRIP脚本编程技术.docx
- 口腔正畸主治医师资格考试(代码357)题库(含答案).pdf VIP
文档评论(0)