函数的递归调用.ppt
《函数的递归调用.ppt》由会员分享,可在线阅读,更多相关《函数的递归调用.ppt(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、L/O/G/O6.6 6.6 6.6 6.6 函数的递归调用函数的递归调用函数的递归调用函数的递归调用章节回顾章节回顾1.以下正确的函数定义形式为:以下正确的函数定义形式为:【】Adoublefun(intx,inty)B.doublefun(intx;inty)C.doublefun(intx,inty);D.doublefun(intx,y)2.以下不正确的描述是:以下不正确的描述是:【】A在在C程序中,实参可以是常量、变量或表达式程序中,实参可以是常量、变量或表达式B在在C程序中,形参可以是常量、变量或表达式程序中,形参可以是常量、变量或表达式C在在C程序中,实参可以是任意类型程序中,实
2、参可以是任意类型D形参应与其对应的实参在个数、类型、顺序上保持一致形参应与其对应的实参在个数、类型、顺序上保持一致3.在在C程序中,用简单变量作为实参时,它与对应的形参之间的数据传递方程序中,用简单变量作为实参时,它与对应的形参之间的数据传递方式为:式为:【】A地址传递地址传递B单向传递单向传递C按用户指定方式传递按用户指定方式传递D由实参传递给形参,再由形参传回给实参由实参传递给形参,再由形参传回给实参4.在在C程序中,函数的返回值的类型由:程序中,函数的返回值的类型由:【】Areturn语句中的表达式的类型决定语句中的表达式的类型决定B调用该函数时的调用函数决定调用该函数时的调用函数决定C
3、调用该函数时由系统临时决定调用该函数时由系统临时决定D在定义该函数时由函数的类型决定在定义该函数时由函数的类型决定A AB BB BD D主要内容主要内容主要内容主要内容一、一、一、一、引入新问题引入新问题引入新问题引入新问题二、二、二、二、函数递归概述函数递归概述函数递归概述函数递归概述三、三、三、三、汉诺塔问题汉诺塔问题汉诺塔问题汉诺塔问题四、四、四、四、课堂练习课堂练习课堂练习课堂练习五、五、五、五、课程小结课程小结课程小结课程小结一、引入新问题一、引入新问题 五位学生坐成一排,学生之间不知道相互的年龄。老师问最后一名学生,即第5名学生,她和她前面这一排学生的年龄总和是多少?思考问题:1
4、 12 23 34 45 5你们年龄之和?你们年龄之和?你们年龄之和?你们年龄之和?你们年龄之和?你们年龄之和?你们年龄之和?你们年龄之和?我们共我们共3737岁岁(27+1027+10)我们共我们共2727岁岁(19+819+8)我们共我们共1919岁岁(10+910+9)我我1010岁岁你你们们年年龄龄之之和和我我们们共共4 46 6岁岁(3 37 7+9 9)递归公式递归公式二、函数递归概述二、函数递归概述1.递归的定义:调用一个函数时直接或间接调用自身,称之为函数的递归函数的递归。2.一个问题能够成为递归必须具备的条件是:3.程序中的递归方式:直接递归调用:直接递归调用:函数直接调用本
5、身间接递归调用:间接递归调用:函数间接调用本身 后一部分与原始问题类似后一部分与原始问题类似 后一部分是原始问题的简化后一部分是原始问题的简化说明说明C C语言语言对递归函数的自调用次数没有限制对递归函数的自调用次数没有限制必须有递归结束条件必须有递归结束条件 int f(x)int x;int y,z;z=f(y);return(2*z);直接调用直接调用直接调用直接调用间接调用间接调用间接调用间接调用int f1(x)int x;int y,z;z=f2(y);return(2*z);int f2(t)int t;int a,c;c=f1(a);return(3+c);用用C C语言解决上
6、述思考题语言解决上述思考题9 9岁岁8 8岁岁1010岁岁9 9岁岁totalAge(5)totalAge(5)=myAge+totalAge(4)=myAge+totalAge(4)totalAge(4)totalAge(4)=myAge+totalAge(3)=myAge+totalAge(3)totalAge(3)totalAge(3)=myAge+totalAge(2)=myAge+totalAge(2)totalAge(2)totalAge(2)=myAge+totalAge(1)=myAge+totalAge(1)totalAge(4)totalAge(4)=1010+27+27=
7、37=37totalAge(3)totalAge(3)=8 8+19+19=27=27totalAge(2)totalAge(2)=9 9+10+10=19=19totalAge(1)totalAge(1)=myAge=myAge=1010M Ma ai in n()调调用用子子函函数数t to ot ta al lA Ag ge e(5 5)=9 9+3 37 7=4 46 61010岁岁totalAge(1)totalAge(1)=myAge=myAgevoid main()int m;printf(input the students number:);scanf(%d,&m);if(m
8、1)total=myAge+totalAge(n-1);else if(n=1)total=myAge;printf(from totalnumber(%d)return%dn,n,total);getch();return total;三、汉诺塔问题三、汉诺塔问题BC一个古典的数学问题:一个古典的数学问题:古代有一个梵塔,塔内有古代有一个梵塔,塔内有3 3个座个座A、B、C,开始时,开始时A A座座上有上有64个盘子,盘子大小不等,大的在下,小的个盘子,盘子大小不等,大的在下,小的在上。在上。有一个老和尚想把这有一个老和尚想把这64个盘子从个盘子从A座移动到座移动到C座,每座,每次只允许移动
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 函数 递归 调用
限制150内