- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[小学教育]第5章递归
第 5 章 递归 授课班级:可视化、数据库 学习目标 理解递归的概念 掌握用分治法设计有效算法的策略 掌握用动态规划方法设计有效算法的策略 掌握回溯法解题的算法设计策略 理解递归算法的工作原理 5.1 递归的概念 定义:一个算法中,若其中有调用自身(直接或间接)的过程,则该算法就是一个递归算法,简称递归。(自调用) 注意:递归算法必须是逐步有规律简化的,最终要有一个非递归的出口,不能出现无穷调用的情况。 在计算机科学中,递归的思想主要表现在三个方面: 数据的定义形式是递归的 数据的结构形式是递归的 问题的解法是递归的 递归算法的基本思想是:把规模大的、较难解决的问题变成规模较小的、易解决的同一问题。规模较小的问题又变成规模更小的问题,并且小到一定程度可以直接得出它的解,从而得到原来问题的解。 利用递归算法解题,首先要对问题的以下三个方面进行分析: 决定问题规模的参数。需要用递归算法解决的问题,其规模通常都是比较大的,在问题中决定规模大小(或问题复杂程度)的量有哪些? 问题的边界条件及边界值。在什么情况下可以直接得出问题的解?这就是问题的边界条件及边界值。 解决问题的通式。把规模大的、较难解决的问题变成规模较小、易解决的同一问题,需要通过哪些步骤或等式来实现?这是解决递归问题的难点。把这些步骤或等式确定下来。 实例 定义是递归的情况 例1:阶乘函数 写成递归算法如下: int Factorial ( int n ) { if ( n = = 0 ) return 1; else return n*Factorial (n-1); } 例2:Fibonacci数列 无穷数列1,1,2,3,5,8,13,21,34,55,……称为Fibonacci数列 描述如下: int fibonacci ( int n ) { if ( n = 1 ) return 1; else return fibonacci (n-1) + fibonacci (n-2); } 双递归函数:当一个函数及它的一个变量是由函数自身定义时,称这个函数是双递归函数。 例3:Ackerman函数 A(n,m)的自变量m的每一个值都定义了一个单变量函数。 m =1时,A(n,1)=2n (n=1); m =2时,A(n,2)=2n ; m =3时,A(n,3)=22. .2 (其中指数中2的层数为n); …… 推导: 例4:排列问题 设R={r1,r2,… …rn}是要进行排列的n个元素,Ri=R-{ri}。R的全排列可归纳定义为: 当n=1时,perm(R)=(r),其中r是集合R中唯 一的元素; 当n1时, perm(R)由(r1) perm(R1), (r2) perm(R2), … … ,(rn) perm(Rn) 构成。 全排列的递归算法如下: void perm (int list[ ],int k,int m) { int i; if(k= =m) { for(i=0;i=m;i++) printf(“%d”,list[i]); printf(“\n”); } else for(i=k;i=m;i++) { swap(list[k],list[i]); //交换元素值 perm(list,k+1,m); swap(list[k],list[i]); } } 例5:整数划分问题 将一个正整数n表示成形如下式的一系列正整数的和,称为n的一个分划。 n=n1+n2+……+nk (ni≥1,i=1,2,……,k,k≥1) 且n≥n1≥n2≥……≥nk ≥1 正整数n的不同的划分个数称为正整数n的划分数,记作p(n)。 例如:整数6的分划数有11种: 6; 5+1; 4+2,4+1+1; 3+3,3+2+1,3+1+1+1; 2+2+2,2+2+1+1,2+1+1+1+1; 1+1+1+1+1+1; 在正整数n的所有不同的划分中,将最大加数n1不大于m的划分个数记作q(n,m)。可以建立q(n,m)的如下递归关系: (1) q(n,1)=1, n≥1 (2) q
有哪些信誉好的足球投注网站
文档评论(0)