02计算机算法-第二章-递归-2011.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
02计算机算法-第二章-递归-2011

定义 F(n)= 递归的优点:与数学定义相似,结构清晰,可读性强,易证明,算法设计方便。 递归的缺点:运行效率较低,耗时,空间占用多,重复计算量多。 消去递归: 目的是克服递归时间、空间的开销 解决方法:先使用递归,然后证明所设计的递归算法正确并且确信是一个好算法,再把递归消去,翻译成与之等价的只使用迭代的算法。 直接递归翻译成迭代过程的规则 定义 F(n)= 2. 举例 求数组a[n]的最大元素, 并输出该最大元素的下标值。 递归算法如下: int n, a[n]; int max1(int i ) { int j, k; if (in) then { j= max1(i+1); if (a[i] a[j]) then k=i; else k=j; } else k= n; return (k); }//max1 2.4 递归关系式的计算 设n=2k,且k为大于1的整数。 T(n) =2 T(n/2)+2 =2 T(2k/2)+2 =2 T(2k-1)+2 =2(2 T(2k-1/2)+2)+2 =2(2 T(2k-2)+2)+2 =22 T(2k-2)+22+2 =... ... =2k-1 T(2k-(k-1))+2k-1+2k-2+...+22+2 =2k-1 T(2)+2k-2 =2k-1 +2k-2 =3/2·2k-2 代入n=2k得 T(n) =3/2·n-2 =O(n) 因为 T(n) ≤ T(n-1) +T(n-1) ≤ 2T(n-1) ≤ 2[2T(n-2)] ≤2[2[2 [T(n-3)]]] ≤ …. ≤2n-1T(1)=O(2n ) 所以 T(n) =O(2n) 则 方程的解是:T(n)=2n-1=O(2n)。 证明:当n=2时,T(n)=22-1=3 成立 设当n=k-1时,T(k-1)=2k-1-1 则当n=k时,有T(k)=2k-1 而 T(k) =2T(k-1)+1 =2(2k-1-1)+1 =2k-2+1=2k-1 ∴ T(n)=2n -1 =O(2n) 采用迭代方法解此递归方程: 由T(n) =2T(n-1)+1 =2[2T(n-2)+1]+1 =22T(n-2)+21+20 =22[2T(n-3)+1]+21+20 =23T(n-3)+22+21+20 =... ... =2kT(n-k)+2k-1+2k-2+...+21+20 当取k=n-2有 T(n) =2n-2T(2)+2n-3+2n-4+...+21+20 =2n-2(22-1)+2n-3+2n-4+...+21+20 =2n-2n-2+2n-3+2n-4+...+21+20 = =2n-1 ∴ T(n)=O(2n) 其结果与数学归纳法证明的结果一致。 为考察递归方程的解的数量级,我们给出定理1。 定理1:设a,b,c是非负常数,n是c的整幂,则递归方程: 小 结 递归算法实现的机制(与一般算法的调用的不同) 如何设计递归算法 递归算法的一般模式 递归和消去递归 递归方程的求解 典型实例 设所需的时间是T(n),则有 22-1 n=2 T(n)= 2T(n-1)+1 n2 HANOI塔问题其时间复杂性的分析。 结论:HANOI问题的渐近时间复杂性是指数级的。 数学归纳法 void hanoi( int n, int A, int B, int C) { if (n 0) { hanoi

文档评论(0)

jgx3536 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档