- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【pascal教程】第6章函数报告
例6.28 已知一个一维数组A[1..N](N50),又已知一整数M。 如能使数组A中任意几个元素之和等于M,则输出YES,反之则为NO。 【分析】对于一个已确定的数组a[1]至a[n]和一个确定的数m,判断能否使数组a中任意几个元素之和等于m,等价于判断能否从数组a中取任意数使其和为m。 此时若a[n]=m,则可以输出“YES”,否则若n=1,则可以输出“NO”。 否则可以按以下规则进行判断:对于a中任意元素a[n]只有取与不取两种情况: (1)取a[n]: 则此时问题转化为:对于一个已确定的数组a[1]至a[n-1]和一个确定的数m-a[n],判断能否使数组a中任意几个元素之和等于m-a[n]。 (2)不取a[n]: 则此时问题转化为:对于一个已确定的数组a[1]至a[n-1]和一个确定的数m,判断能否使数组a中任意几个元素之和等于m。 若用函数sum(n,m)表示能否从数组a[1]至a[n]中取任意数使其和为m,只要sum(n-1,m-a[n])和sum(n-1,m)当中有一个值为真,则sum(n,m)为真,否则为假。因此,可以用递归来解此题。 递归终止条件为: if a[n]=m then sum:=true else if n=1 then sum:=false; 采用函数编写程序如下: Program ex6_28_1; Const max=50; Var a:array[1..max] of integer; n, m, i:integer ; Function sum(n,m:integer):boolean; Begin if a[n]=m then sum:=true else if n=1 then sum:=false else sum:=sum(n-1,m-a[n]) or sum(n-1,m); End; Begin readln(n); for i:=1 to n do readln(a[i]); readln(m); if sum(n,m) then writeln(YES) else writeln(NO); End. 采用过程编写程序如下: Program ex6_28_2; Const max=50; Var a:array[1..max] of integer; n, m, i:integer ; flag : boolean; Procedure sum(n,m:integer); Begin if a[n]=m then flag:=true ` //利用全局变量flag传递结果 else if n=1 then exit //n=1作为递归边界,不再递归下去 else begin sum(n-1,m-a[n]); sum(n-1,m); end; End; Begin readln(n); for i:=1 to n do readln(a[i]); readln(m); flag := false; sum(n,m); if flag then writeln(YES) else writeln(NO); End. 小结 简单地说,递归算法的本质就是自己调用自己,用调用自己的方法去处理问题,可使解决问题变得简洁明了。 递归程序在执行过程中,一般具有如下模式: ①将调用程序的返回地址、相应的调用前的变量都保存在系统堆栈中; ②执行被调用的过程或函数; ③若满足退出递归的条件,则退出递归,并从栈顶上弹回返回地址、取回保存起来的变量值,继续沿着返回地址,向下执行程序; ④否则继续递归调用,只是递归调用的参数发生变化:增加一个量或减少一个量,重复执行直到递归调用结束。 【上机练习6.4】 1、用递归的方法求1+2+3+……+N的值。 2、用递归函数输出斐波那契数列第n项。0,1,1,2,3,5,8,13…… 3、输入一个非负整数,输出这个数的倒序数。例如输入123,输出321。 4、用递归算法将数组A中的N个数倒序输出。 5、用递归方法求N个数中的最大数及其位置。 6、用递归算法将一个十进制数X转换成
您可能关注的文档
- 《面向对象程序设计》实验指导书报告.doc
- 《静脉治疗护理技术操作规范》(6章)报告.ppt
- 《食品安全法》罚则报告.ppt
- 《饭店服务与管理》会考模拟试题(二)及答案报告.doc
- 《食品安全与日常饮食》期末考试1.报告.doc
- 《饭店计算机信息管理》-第3章__饭店信息管理技术基础报告.ppt
- 《风》课件报告.ppt
- 《风向和风速》课件报告.ppt
- 《项脊轩志》报告.ppt
- 《马关条约》报告.ppt
- 【RationalRose2003基础教程】第10章ANSICPP的Rose双向工程报告.ppt
- 【SIDH】九年级科学上册(浙教版)习题课件:3.5.2比热容和热量的计算(共11张)报告.ppt
- 【600考点700分考法】(2017A版)高考物理一轮复习第二章相互作用课件报告.ppt
- 【SPSS19教程】第12章SPSS在市场调研中的应用报告.ppt
- 【SPSS19教程】第3章SPSS描述性统计分析报告.ppt
- 【】高考作文记叙文写作的结构模式课件[83张]报告.ppt
- 【WSC6100-X256盒式AC硬件安装手册】【版本S.0.3】【2015-03-27】报告.doc
- 【SQDH】2015-2016学年(人教版)八年级语文下册:15喂——出来报告.ppt
- 【】接地和电气安全报告.ppt
- 【三年中考】山东省17市2013-2015年中考化学试题分类汇编化学方程式书写及反应类型报告.doc
文档评论(0)