第六章 C语言函数递归调用.ppt

第六章 C语言函数递归调用.ppt

ID:58807583

大小:2.59 MB

页数:9页

时间:2020-10-02

第六章  C语言函数递归调用.ppt_第1页
第六章  C语言函数递归调用.ppt_第2页
第六章  C语言函数递归调用.ppt_第3页
第六章  C语言函数递归调用.ppt_第4页
第六章  C语言函数递归调用.ppt_第5页
资源描述:

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

1、第6章函数函数的递归调用函数的递归调用在调用一个函数的过程中,出现直接或间接地调用该函数本身,称为函数的递归调用。f函数调用f函数f1函数调用f2函数f2函数调用f1函数intf(intx){intz;if(x==0)return1;if(x>0)z=f(x-1);elseif(x<0)z=f(x+1);return(2*z);}例1:函数的递归调用#includevoidrecur(int);intmain(void){recur(1);return0;}voidrecur(intn)//递归函数{printf("第%d级调用",n);//1if(n<4){

2、recur(n+1);//递归}printf("第%d级返回",n);//2}输出结果:第1级调用第2级调用第3级调用第4级调用第4级返回第3级返回第2级返回第1级返回解析:从结果可以看出,1和2相当于循环体,当符合测试条件(即n<4)时,#1部分循环;当测试条件为false时,2部分循环。在递归函数中,位于递归调用之前的语句(即1部分),按被调函数(即recur())的顺序执行;位于递归调用之后的语句(即2部分),按被调函数相反的顺序执行。每级函数调用都有自己的变量,递归调用就相当于又从头开始执行函数的代码。每次函数调用都会返回一次,并且按顺序逐级返回递归。例2:函数的递归调

3、用#includeintfun(intn)//定义函数{if(n==0

4、

5、n==1){n=1;}else{n=n*fun(n-1);//递归调用函数}returnn;}intmain(){inti,j;printf("请输入一个数字:");scanf("%d",&i);j=fun(i);printf("它的阶乘为:%d",j);}例3:函数的递归调用有3个人坐在一起,问第3个人多少岁?他说比第2个人大2岁。问第2个人多少岁?他说比第1个人大2岁。最后问第1个人,他说是10岁。请问第3个人多大?分析:age(3)=age(2)+2;age(2)=age(1)+2

6、;age(1)=10;归纳:n=1age(n)=10n>1age(n)=age(n-1)+2程序如下:#includeintage(intn){intc;if(n==1){c=10;}elseif(n>1){c=age(n-1)+2;}returnc;}intmain(void) {printf(“%d”,age(3));return0;}程序执行过程如下:intmain(void) {printf(“%d”,age(3));}intage(3){intc;c=age(2)+2;returnc;}intage(2){intc;c=age(1)+2;returnc;

7、}intage(1){intc;c=10;returnc;}例4:函数的递归调用课堂习题#includevoidfunc1(inti); voidfunc2(inti); charst[]="hello,friend!";voidfunc1(inti) {printf("%c",st[i]); if(i<3){i+=2;func2(i);} }voidfunc2(inti) {printf("%c",st[i]); if(i<3){i+=2;func1(i);} }intmain(void) {inti=0;func1(i);return0;}A)helloB)h

8、elC)hloD)hlm1.下列程序执行后的输出结果是()2.有如下程序:#includeintfunc(inta,intb){return(a+b);}intmain(void){intx=2,y=5,z=8,r; r=func(func(x,y),z); printf(“%d”,r); return0;}该程序的输出的结果是()。A)12B)13C)14D)153.下面程序的输出结果是()。#includeintf(inta,intb);intmain(void){inti=2,p; p=f(i,i+1); printf(“%d”,p);

9、return0;}intf(inta,intb){intc; if(a>b){c=1;} elseif(a==b){c=0;}else{c=-1;} returnc;}A)-1B)0C)1D)2

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

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

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