第六章 函数、递推与递归 清华大学.pptVIP

  1. 1、本文档共69页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
 1, 1, 2, 3, 5, 8, 13, 21, …… fibonacci (1) = 1 fibonacci (2) = 1 fibonacci (n) = fibonacci(n-1) + fibonacci(n-2) 求Fibonacci数的递归程序具有指数复杂性。 求Fibonacci数 算法举例(3) unsigned long GetFibonacci( unsigned int n ) { if( n == 2 || n == 1 ) return 1; else return GetFibonacci( n - 1 ) + GetFibonacci( n - 2 ); } unsigned long GetFibonacci( unsigned int n ) { unsigned long result, i, f1, f2; if( n == 2 || n == 1 ) return 1; f2 = 1; f1 = 1; for( i = 3; i = n; i++ ) { result = f1 + f2; f1 = f2; f2 = result; } return result; } 非递归程序 几个问题的递归思想: 求数组a[n]中各元素的和 求数组a[n]中各元素的最大(最小)值 给数组a[n] 排序 求一个自然数的各位数字之和 下楼问题 跳马问题 八皇后问题 递归信任 理解递归问题的原则 不分析复杂细节而仅考虑单一层次上的操作 不必跟踪递归调用的堆栈框架 基本递归假设 只要递归调用时的参数比原始参数在某种程度上更简单,则递归调用就一定能获得正确答案 递归心理学:这种简单递归调用一定正确工作的假设即为递归信任 递归实现是否检查了最简单情形 在尝试将问题分解成子问题前,首先应检查问题是否已足够简单 在大多数情况下,递归函数以 if 开头 如果程序不是这样,仔细检查源程序 是否解决了最简单情形 大量递归错误是由没有正确解决最简单情形导致的 最简单情形不能调用递归 递归分解是否使问题更简单 只有分解出的子问题更简单,递归才能正确工作,否则将形成无限递归,算法无法终止 问题简化过程是否能够确实回归最简单情形,还是遗漏了某些情况 子问题是否与原始问题完全一致 如果递归过程改变了问题实质,则整个过程肯定会得到错误结果 子问题的解是否正确组装为原始问题的解 将子问题的解正确组装以形成原始问题的解也是必不可少的步骤 * * * # include iostream #include cmath using namespace std; int Max( int , int ); int Min( int , int ); int main( ) { int p = 0; int q = 100; int sum = 0,x = 0; int i = 1; for ( i = 1; i=10; i = i+1 ) { cout“请第” i “位裁判给分”endl; cin x ; p = Max( x, p ) ; q = Min( x, q ) ; sum = sum + x ; } cout“选手得分”(sum-p-q)/(10-2); return 0; } int Max( int a , int b ) { if ( a b ) return a ; else return b ; } int Min( int c , int d ) { if ( c d ) return c ; else return d ; } #includeiostream #includeiomanip using namespace std; void print(int[],int); //void print(int*,int); int main() { const int n=5; int a[n]

文档评论(0)

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

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

1亿VIP精品文档

相关文档