- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[计算机软件及应用]2008递归
可见,仅需两句话就能定义一个由无穷多个元素组成的集合。在程序中,递归是通过函数或过程的调用来实现的。函数或过程直接调用其自身,称为直接递归;函数或过程间接调用其自身,称为间接递归。 例1、递归计算N! 在调用过程或函数之前,系统需完成三件事: ⑴为被调用过程的局部变量分配存储区; ⑵将所有的实在参数、返回地址等信息传递给被调用过程保存; ⑶将控制转移到被调过程的入口。 从被调用过程返回调用过程之前,系统也应完成三 件工作: ⑴保存被调过程的计算结果; ⑵释放被调过程的数据区; ⑶依照被调过程保存的返回地址将控制转移到调用过程。 例2、用递归方法求两个正整数m和n的最大公约数。 var m,n:longint ; function gcd(m,n:longint):longint; begin if m mod n=0 then gcd :=n else gcd:=gcd(n, m mod n);{递归调用} end; begin { 主程序 } read (m,n); writeln (‘m=’,m ,’n=’,n ,’gcd=’, gcd( m,n) ); end. 例3、用递归算法完成折半查找。 function search(x,top,bot:integer):Integer; var mid: integer; begin if top=bot then begin mid:=(top+bot) div 2; if x=a[mid] then search:=mid else if xa[mid] then search:=search(x,top,mid-1) else search:=search(x,mid+1,bot) end else search:=-1; end; 例4、由m个A,n个B组成若干个排列。从某个排列 的位置1开始数,数到任意位置时都能保证A的个数 不少于B的个数,则称该排列为合理排列。例如: 当m=2,n=2时排列有 A A B B(合理) A B A B(合 理)A B B A(不合理) B B A A(不合理) 合理排列数有2 种 输入:只有一行两个整数m,n(1≤n≤m≤12)(用 空格分隔) 输出:一个整数(所有的合理排列数) 【样例】 输入 输出 3 2 5 分析:模拟排队的情况,从第1个人开始,第1 人只能是A,第2个可以是A也可以是B,再其后的人要保证任意位置时都能保证A的个数不少于B的个数,递归生成整个排列。 Var m,n,t:LongInt; Procedure pd(i,j:LongInt); Begin If (i=m) And (j=n) Then t:=t+1{已生成一种排列} Else Begin If im Then pd(i+1,j);{增加1个A} If (jn) And (ji) Then pd(i,j+1); End; {增加1个B} End; Begin t:=0; Read(m,n);pd(1,0);Writeln(t); End. Var A:Array[0..100] Of Integer; N,T:Integer; Procedure Find(N,I:Integer); Var J:Integer; Begin For J:=1 To N Do If (J=A[I-1]) Then Begin A[I]:=J; If N=J Then T:=T+1 Else Find(N-J,I+1); End; End; Begin Read(N); T:=0; A[0]:=0; Find(N,1); Writeln(T); End. var n:integer; procedure hanoi(n:integer;x,y,z:char); begin if n=1 then
您可能关注的文档
最近下载
- 2025最新事业单位考试公共基础知识复习题库附答案详解(满分必刷).docx VIP
- 高效液相色谱法测定土霉素片含量.pdf VIP
- GB50177-2024氢气站设计规范.doc VIP
- T∕CACM 1021.77-2018 中药材商品规格等级 菟丝子.docx VIP
- 围绝经期激素治疗试题(附答案).docx VIP
- 2025年内江市工会系统事业单位人员招聘笔试考试题库及答案解析.docx VIP
- PBMS6000蓄电池组监控装1置V1.01_说明书.docx VIP
- 2025最新事业单位招聘公共基础知识考试题库附答案详解(满分必刷).docx VIP
- 2025年事业单位招聘考试公共基础知识试题题库附答案详解(满分必刷).docx VIP
- 知识产权快速维权服务中心建设服务规范.pdf VIP
文档评论(0)