- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2_2_递归与非递归程序的转换
递归程序?非递归程序;0 递归的基本概念;0 递归的基本概念;0 递归的基本概念;1 递归算法的设计;1 递归算法的设计;1 递归算法的设计;1 递归算法的设计;1 递归算法的设计;1 递归算法的设计;1 递归算法的设计;1 递归算法的设计;1 递归算法的设计;2 为什么:递归?非递归?;2 为什么:递归?非递归?;2 为什么:递归?非递归?;2 为什么:递归?非递归?;2 为什么:递归?非递归?;2 为什么:递归?非递归?;3 递归?非递归的转换;3 递归?非递归的转换方法1-表述1;3 递归?非递归的转换方法1-表述1;3 递归?非递归的转换方法1-表述1;3 递归?非递归的转换方法1-表述1; 讨论直接使用栈保存中间结果,从而将递归算法转化为非递归算法的过程。以求N!为例,其递归模型有一个递归体和一个递归出口两个式子,分别称为(1)式和(2)式。 ;设计一个栈,其结构如下: struct { int vn; /*保存n值*/ int vf; /*保存fun1(n)值*/ int tag; /*标识是否求出fun1(n)值, 1:未求出,0:已求出*/ } St[MaxSize]; /*定义简单数组栈*/ ;计算fun1(5)之值的过程如下: 将(5,*,1)进栈; while (栈不空) { if (未计算出栈顶元素的vf值即St[top].tag==1) if (栈顶元素满足(1)式) 求出对应的St[top].vf值, 置St[top].tag=0; else /*栈顶元素满足(2)式*/ 将(St[top].vn-1,*,1)进栈; else if (已计算出栈顶元素的vf值即St[top].tag==0) 显然栈顶元素由次栈顶元素通过(2)式分解得到的,回过来 由栈顶元素的vf值计算出次栈顶元素的vf值并退栈; if (栈中只有一个已求出vf值的元素) 退出循环; } St[0].vf即为所求的fun1(n)值; ;3 递归?非递归的转换方法1-表述2;3 递归?非递归的转换方法1-表述2;3 递归?非递归的转换方法1-表述2;3 递归?非递归的转换方法2;3 递归?非递归的转换方法2;3 递归?非递归的转换方法2;3 递归?非递归的转换方法2;3 递归?非递归的转换方法3;3 递归?非递归的转换方法3;3 递归?非递归的转换方法3;0-1背包问题;建立模型分析:定义m(i,j)是背包容量为j,可选择物品为i,i+1,…,n时0-1背包问题的最优值。可以建立计算m(i,j)的递归式如下。;;4 小结
文档评论(0)