函数的递归调用.ppt

函数的递归调用.ppt

ID:51456136

大小:1.53 MB

页数:17页

时间:2020-03-23

函数的递归调用.ppt_第1页
函数的递归调用.ppt_第2页
函数的递归调用.ppt_第3页
函数的递归调用.ppt_第4页
函数的递归调用.ppt_第5页
资源描述:

《函数的递归调用.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、6.6函数的递归调用章节回顾1.以下正确的函数定义形式为:【】A.doublefun(intx,inty)B.doublefun(intx ;inty)C.doublefun(intx,inty) ;D.doublefun(intx,y)2.以下不正确的描述是:【】A.在C程序中,实参可以是常量、变量或表达式B.在C程序中,形参可以是常量、变量或表达式C.在C程序中,实参可以是任意类型D.形参应与其对应的实参在个数、类型、顺序上保持一致3.在C程序中,用简单变量作为实参时,它与对应的形参之间的数据传递方式为:【】A

2、.地址传递B.单向传递C.按用户指定方式传递D.由实参传递给形参,再由形参传回给实参4.在C程序中,函数的返回值的类型由:【】A.return语句中的表达式的类型决定B.调用该函数时的调用函数决定C.调用该函数时由系统临时决定D.在定义该函数时由函数的类型决定ABBD主要内容一、引入新问题二、函数递归概述三、汉诺塔问题四、课堂练习五、课程小结一、引入新问题五位学生坐成一排,学生之间不知道相互的年龄。老师问最后一名学生,即第5名学生,她和她前面这一排学生的年龄总和是多少?思考问题:12345你们年龄之和?你们年龄之和

3、?你们年龄之和?你们年龄之和?我们共37岁(27+10)我们共27岁(19+8)我们共19岁(10+9)我10岁你们年龄之和我们共46岁(37+9)递归公式二、函数递归概述1.递归的定义:调用一个函数时直接或间接调用自身,称之为函数的递归。2.一个问题能够成为递归必须具备的条件是:3.程序中的递归方式:直接递归调用:函数直接调用本身间接递归调用:函数间接调用本身后一部分与原始问题类似后一部分是原始问题的简化说明C语言对递归函数的自调用次数没有限制必须有递归结束条件intf(x)intx;{inty,z;……z=f(

4、y);……return(2*z);}直接调用间接调用intf1(x)intx;{inty,z;……z=f2(y);……return(2*z);}intf2(t)intt;{inta,c;……c=f1(a);……return(3+c);}用C语言解决上述思考题9岁8岁10岁9岁totalAge(5)=myAge+totalAge(4)totalAge(4)=myAge+totalAge(3)totalAge(3)=myAge+totalAge(2)totalAge(2)=myAge+totalAge(1)totalA

5、ge(4)=10+27=37totalAge(3)=8+19=27totalAge(2)=9+10=19totalAge(1)=myAge=10Main()调用子函数totalAge(5)=9+37=4610岁totalAge(1)=myAgevoidmain(){intm;printf("inputthestudent'snumber:");scanf("%d",&m);if(m<=0)printf("thenumberiserror");elseprintf("allstudent'sageis:%d",t

6、otalAge(m));}inttotalAge(intn){inttotal,myAge;printf("inputtotalnumber(%d)",n);printf("pleaseinputthe%dstudent'sage:",n);scanf("%d",&myAge);if(n>1)total=myAge+totalAge(n-1);elseif(n==1)total=myAge;printf("fromtotalnumber(%d)return%d",n,total);getch();retur

7、ntotal;}三、汉诺塔问题BC一个古典的数学问题:古代有一个梵塔,塔内有3个座A、B、C,开始时A座上有64个盘子,盘子大小不等,大的在下,小的在上。有一个老和尚想把这64个盘子从A座移动到C座,每次只允许移动一个盘,且在移动过程中,在每个座上都始终保持大盘在下,小盘在上。在移动过程中可以利用B座,写出移动步骤。An个盘子ABC动画演示:分析3个盘子的情况:1.将A座上2个盘子移到B座(借助C);2.将A座上1个盘子移到C座;3.将B座上2个盘子移到C座(借助A)。其中第2步可以直接实现。第1、3步还需要递归分

8、解。ABCABCABC递归分解:第1步——将A座上2个盘子移到B座(借助C),分解为:1.1将A上一个盘子从A移到C;1.2将A上一个盘子从A移到B;1.3将C上一个盘子从C移到B。ABC1.1ABC1.2ABC1.3ABC3.第3步——将B座上2个盘子移到C座(借助A),分解为:3.1将B上一个盘子从B移到A;3.2将B上一个盘子从B移到C;3.3将A上一

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。