- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
子程序的递归与嵌套
子程序的嵌套与递归;1、复习函数与过程——子程序;【例1】:输入一个正整数,如果是回文素数则输出“Yes”,否则输出“No”;注意:
1)内、外层子程序不得相互交叉,内层必须完全嵌套在外层之中;
2)一般情况下,在子程序内部需要使用的变量应在子程序的内部进行定义。外层子程序不能访问内层子程序所定义的变量。;function fac(k:integer):longint;
var i:integer; t:real;
begin
t:=1;
for i:=2 to k do t:=t*i;
fac:=t;
end;
function cnm(n,m:integer):real;
begin
cnm:=fac(n)/(fac(m)*fac(n-m));
end;;【例3】:求组合数( )/7! 的和。;3.递归调用:
①递归的定义:
Pascal语言中,如果在一个函数、过程等的定义或说明内部又直接或间接地出现有对自身的引用,则称它们是递归的或者是递归定义的。
例如:在数学上,所有偶数的集合可递归地定义为:
0是一个偶数;
一个偶数和2的和是一个偶数。
可见,仅需两句话就能定义一个由无穷多个元素组成的集合。
②递归的实现:
通过函数或过程的调用来实现。
函数或过程直接调用其自身,称为直接递归;函数或过程间接调用其自身,称为间接递归。;递归应用 ;程序如下:
Program ex5;
Function num(x:integer):integer; //采用函数编写
begin
if x=5 then num:=10 //递归边界
else num:=num(x+1) +2; //递归式
end;
BEGIN
writeln(The Num is ,num(1));
END.;课堂练习1、program lx1(input,output);
var s,n:integer;
function f(n:integer):integer;
?begin
? if n=1 then f:=1 else f:=n*n+f(n-1)
?end;
begin
?write(‘input n:’);readln(n);s:=f(n);writeln(‘f(’,n,‘)=’,s)
end.
该程序的功能是: 。当n的值为6时,程序的运行结果是:
;②在处理子问题时,如果又调用原问题的处理子程序,但形参值应是不断改变的量(表达式);;如何设计递归算法?;
n!;栈;递归过程;分析;分析;参考程序:;执行过程分析;递归结构的优点:结构清晰、容易阅读和理解。
递归结构的缺点:需要保留每次递归调用时的参数和局部变
量,占用内存大,耗费机时多,程序运行
的效率较低 。
递归算法的实用情况:
1.符合递归的描述:需要解决的问题可以化为子问题求解,
而子问题求解的方法与原问题相同,只
是数量增大或减少。
2.递归调用的次数是有限的。
3.必须有递归结束的条件。;例9、汉诺塔问题 ;var a,b,c,number:integer;
procedure move(n: integer;a,b,c:char);
begin
???? if n=1 then writeln(a,-,c)
???? else
???????? begin
????????????? move(n-1,a,c,b);
????????????? writeln(a,-,c);
????????????? move(n-1,b,a,c)
???????? end;
end;
begin
???? write(the number of dish:);
???? readln(number);
???? move(number,’A’,’B’,’C’);
end.;【例10】求找出具有下列性质的数的个数(包含输入的自然数n):
先输入一个自然数n(n=500),然后对此自然数按照如下方法进行处理:
①. 不作任何处理;
②. 在它的左边加上一个自然数,但该自然数不能超过原数的一半;
③. 加上数后,继续按此规则进行处理,直到不能再加自然数为止.
样例:? 输入:? 6
满足条件的数为?
?6
您可能关注的文档
- 奇妙的对联讲课实用.ppt
- 奇妙的对联课件1.ppt
- 天津市武清区城乡总体规划[2008-2020年].ppt
- 奇瑞汽车市场调查策划书[ppt23].ppt
- 奇妙的克隆课后题答案.ppt
- 头脑风暴后产生的几种创意想法.ppt
- 奋勇拼搏蓄力高三.ppt
- 奥美-Mkconcpt13个入门销售概念.ppt
- 奥因产品介绍[室内空气净化产品].ppt
- 奥尔夫音乐小母鸡的台风天.ppt
- 医学解剖生理课件推荐.pptx
- 医学装备科培训课件.pptx
- 县应急响应和指挥能力建设提升项目方案投标文件(技术文件).doc
- 防雷检测投标方案投标文件(技术文件).doc
- CN201480043617.X_螺丝驱动机构_EJOT有限公司_公开.pdf
- CN201480043294.4_带有具有驱动机构的螺丝头的螺丝_EJOT有限公司_公开.pdf
- CN201510509316.8_用于制造螺钉的挤压模具的阴模模块组_卡迈锡控股两合公司_公开.pdf
- 丝绸品牌全年内容营销规划【服装配饰】【丝绸种草营销】.pptx
- 抖音本地同城门店玩法运营方案【抖音本地生活运营】【抖音门店运营】.pptx
- 国际美妆护肤品牌小美盒社交种草方案【美妆护肤】【种草营销】【小红书 B站 抖音】.pptx
文档评论(0)