- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Pascal语言(过程与函数3——递归)
* * 六、程序的嵌套和递归调用 1.子程序的嵌套: 注意: 1)内、外层子程序不得相互交叉,内层必须完全嵌套在外层之中; 2)一般情况下,在子程序内部需要使用的变量应在子程序的内部进行定义。外层子程序不能访问内层子程序所定义的变量。 『例题13』:求组合数 的和。 var s:real; function cnm(n,m:integer):real; function fac(k:integer):real; var i:integer; t:real; begin t:=1; for i:=2 to k do t:=t*i; fac:=t; end; begin cnm:=fac(n)/(fac(m)*fac(n-m)); end; begin s:=cnm(6,3)+cnm(9,5); writeln(‘s=’,s:8:2); end. 『例题13』:求组合数( )/7! 的和。 var s:real; function fac(k:integer):real; 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; begin s:=cnm(6,3)+cnm(9,5); writeln(‘s=’,(s/fac(7)):8:2); end. 3.递归调用: ①递归的定义: Pascal语言中,如果在一个函数、过程等的定义或说明内部又直接或间接地出现有对自身的引用,则称它们是递归的或者是递归定义的。 例如:在数学上,所有偶数的集合可递归地定义为: 0是一个偶数; 一个偶数和2的和是一个偶数。 可见,仅需两句话就能定义一个由无穷多个元素组成的集合。 ②递归的实现: 通过函数或过程的调用来实现。 函数或过程直接调用其自身,称为直接递归;函数或过程间接调用其自身,称为间接递归。 直接递归 间接递归 n! 1 n=0 n(n-1)! n0 ③几个例题: 【例14】:用递归计算n! n!可以由下面公式表示: var n,s:integer; function fac(a:integer):integer; begin if a=0 then fac:=1 else fac:=a*fac(a-1); end; begin readln(n); s:=fac(n); writeln(n,‘!=’,s) end. 使用递归求解问题,通常可以将一个比较大的问题层层转化为一个与原问题相类似的、规模较小的问题进行求解,最终达到对原问题的求解。 栈 …… fac(5)=5* …… fac(5)=5* fac(4)=4* fac(3)=3* …… fac(5)=5* fac(4)=4* …… fac(5)=5* fac(4)=4* fac(3)=3* fac(2)=2* fac(5)=5* fac(4)=4* fac(3)=3* fac(2)=2* fac(1)=1* fac(5)=5* fac(4)=4* fac(3)=3* fac(2)=2* fac(0)=1 fac(1)=1* 【例15】:用递归方法求两个数m和n的最大公约数(m0,n0)。 找出递归公式: var m,n,g:integer; function gcd(m,n:integer):integer; var r:integer; begin r:=m mod n; if r=0 then gcd:=n else gcd:=gcd(n,r); end; begin read(m,n); g:=gcd(m,n); writeln(‘m=’,m,‘n=’,n,‘gcd=’,g) end. 递归结构的优点:结构清晰、容易阅读和理解。 递归结构的缺点:需要保留每次递归调用时的参数和局部变 量,占用内存大,耗费机时多,程序运行 的效率较低 。 递归算法的实用情况: 1.符合递归的描述:需要
您可能关注的文档
最近下载
- 电子部超级说服力.pdf VIP
- 地方化债又出新规:从35、47、14号文到134号文.docx
- (完整word版)学前教育专业简笔画教案.doc
- 《运筹学》课程教学大纲(本科).docx VIP
- 公路工程监理资料管理.ppt
- 华中农业大学 614微生物学 2016年考研真题.pdf VIP
- 参考学习资料 附件1:国铁集团工电部关于新建西至华中地区铁路煤运通道线名运营里程线路允许速度的函(审签稿).docx
- (新版)拖拉机驾驶证科目一知识考试题库500题(含答案).docx
- 人教部编2024年新改版语文五年级上册全套月考试题及答案(共4套).pdf VIP
- 17小学语文《盼》课件(共40张PPT).pptx VIP
文档评论(0)