下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第 5 章章 递归递归 教材中练习题及参考答案 1. 有以下递归函数: void fun(int n)void fun(int n) if (n=1) printf(a:%dn,n); else printf(b:%dn,n); fun(n-1); printf(c:%dn,n); 分析调用 fun(5)的输出结果。 解:调用递归函数 fun(5)时,先递推到递归出口,然后求值。这里的递归出口语句是 printf(a:%dn,n),递推时执行的语句是 printf(b:%dn,n),求值时执行的语句是 printf(c:%dn,n)。调用 fun(5)的输出结果如下: b:5 b:4 b:3
2、 b:2 a:1 c:2 c:3 c:4 c:5 2. 已知 A0.n-1为整数数组,设计一个递归算法求这 n 个元素的平均值。 解:设avg(A,i)返回A0.i共i+1个元素的平均值,则递归模型如下: avg(A,i)=A0 当i=0 avg(A,i)=(avg(A,i-1)*i+Ai)/(i+1) 其他情况 对应的递归算法如下: float avg(int A,int i)float avg(int A,int i) if (i=0) return(A0); else return(avg(A,i-1)*i+Ai)/(i+1); 2 数据结构教程学习指导 求 An中 n 个元素平均值的调
3、用方式为:avg(A,n-1)。 3. 设计一个算法求正整数 n 的位数。 解:设 f(n)为整数 n 的位数,其递归模型如下: f(n)=1 当 n10 时 f(n)=f(n/10)+1 其他情况 对应的递归算法如下: int fun(int n)int fun(int n) if (n0) s1=invert(SubStr(s,2,StrLength(s)-1); s2=Concat(s1,SubStr(s,1,1); else StrCopy(s2,s); return s2; 第 5 章 递归 3 6. 设有一个不带表头结点的单链表 L,设计一个递归算法 count(L)求以 L 为首
4、结点指 针的单链表的结点个数。 解:对应的递归算法如下: int count(int count(LinkNodeLinkNode *L)*L) if (L=NULL) return 0; else return count(L-next)+1; 7. 设有一个不带表头结点的单链表 L,设计两个递归算法,traverse(L)正向输出单链表 L 的所有结点值,traverseR(L)反向输出单链表 L 的所有结点值。 解:对应的递归算法如下: void traverse(void traverse(LinkNodeLinkNode *L)*L) if (L=NULL) return; prin
5、tf(%d ,L-data); traverse(L-next); void traverseR(void traverseR(LinkNodeLinkNode *L)*L) if (L=NULL) return; traverseR(L-next); printf(%d ,L-data); 8. 设有一个不带表头结点的单链表 L,设计两个递归算法,del(L,x)删除单链表 L 中 第一个值为 x 的结点,delall(L,x)删除单链表 L 中所有值为 x 的结点。 解:对应的递归算法如下: void del(void del(LinkNodeLinkNode * if (L=NULL)
6、return; if (L-data=x) t=L; L=L-next; free(t); return; del(L-next,x); void delall(void delall(LinkNodeLinkNode * if (L=NULL) return; if (L-data=x) t=L; L=L-next; free(t); delall(L-next,x); 9. 设有一个不带表头结点的单链表 L,设计两个递归算法,maxnode(L)返回单链表 L 4 数据结构教程学习指导 中最大结点值,minnodel(L)返回单链表 L 中最小结点值。 解:对应的递归算法如下: ElemT
7、ype maxnode(ElemType maxnode(LinkNodeLinkNode *L)*L) ElemType max; if (L-next=NULL) return L-data; max=maxnode(L-next); if (maxL-data) return max; else return L-data; ElemType minnode(ElemType minnode(LinkNodeLinkNode *L)*L) ElemType min; if (L-next=NULL) return L-data; min=minnode(L-next); if (minL
8、-data) return L-data; else return min; 10. 设计一个模式匹配算法,其中模板串 t 含有通配符*,它可以和任意子串匹配。对 于目标串 s,求其中匹配模板 t 的一个子串的位置(*不能出现在 t 的最开头和末尾) 。 解:采用 BF 模式匹配的思路,当是 si和 tj比较,而 tj为*时,取出 s 中对应*的 字符之后的所有字符构成的字符串,即 SubStr(s,i+2,s.length-i-1),其中 i+2 是 s 中对应 *字符后面一个字符的逻辑序号。再取出 t 中*字符后面的所有字符构成的字符串,即 SubStr(t,j+2,t.length-j-1),递归对它们进行匹配,若返回值大于-1,表示匹配成功,返 回 i。否则返回-1。对应的递归算法如下: #include sqstring.cpp /顺序串的基本运算算法 findpat(SqString s,SqString t)findpat(SqString s,SqString t) int i=0,j=0,k; while
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 48105-2026含碱性或其他非酸性电解质的蓄电池和电池组工业设备用锂蓄电池和电池组安全要求
- 2026年10月19日 白城市洮北区考核基地 起亚汽车 渠道销售专员 21人
- 宁夏银川市唐徕中学2026-2027学年第一学期9月月考高一年级数学试卷(含答案)
- 湖北省孝感市应城市2025-2026学年七年级上学期期中历史试卷(含答案)
- 2026校园防灾减灾主题课件:泥石流灾害的预防与预警
- 2025-2026学年海南省五指山市杜郎口实验学校八年级(下)期末物理试卷(含答案)
- 2026高中生世界精神卫生日课件
- 普外科护士长上半年工作总结
- 2026初三年级德育工作计划课件:德育队伍专业化建设
- 2026大学教研组长专题培训课件:校园欺凌的预防与处理
- 2026四川绵阳市疾病预防控制中心招聘卫生执法监督协管员3人笔试模拟试题及答案详解
- 2026年广东省国家工作人员学法用法考试通-用题库及答案
- 2026年辽宁省大连市辅警人员招聘考试试题及答案
- 2026新人教版二年级上册小学数学教学计划附教学进度表教案
- 金蝶云星空总账初始化操作手册
- 新版2026秋新人教版五年级上册语文全册教案合集
- 新苏教版科学五年级上册 3.9《弹力》教学课件
- 2025年新交安安全员b证考试题库及答案
- 【初一】【秋季上】七年级开学家长会:从小学到初中陪孩子完成一次重要换挡 校园风【课件】
- 2026秋新教材译林版五年级上册英语Unit 1 Good habits 语法讲义+练习题(含答案)
- 2026年秋统编版(新教材)道德与法治五年级上册(全册)分层作业及答案(附目录)
评论
0/150
提交评论