函数嵌套调用和递归调用.ppt

函数嵌套调用和递归调用.ppt

ID:48513890

大小:459.00 KB

页数:27页

时间:2020-01-22

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

《函数嵌套调用和递归调用.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《C语言程序设计》学习内容:函数的嵌套调用和递归调用6.9函数的嵌套调用和递归调用引例编程函数求解:y=(x+y)2!然后调用函数求解(2+3)2!以及(3+4)2!要求:1、首先编写求和函数,求解x+y的和。2、编写函数求解(x+y)的平方(x+y)23、编写函数求解(x+y)2!main(){inta,b,c;scanf(“%d,%d”,&a,&b);jc(a,b);printf(“sumis%d",c);}intjc(intk,intj){intz,m,i,s=1;sum(k,j);pf(z);for(i=1;i<=m;i++)s=s*i;

2、returns;}intsum(intx,inty){return(x+y);}intpf(inth){return(h*h);}c=z=m=6.9.1函数的嵌套调用C语言中不允许嵌套的函数定义,各函数之间是平行的,不存在上一级函数和下一级函数的问题。voidprint(){putchar('*');voidprnline(intn){inti;for(i=0;i<=n;i++)putchar('');}}C语言允许在一个函数的定义中出现对另一个函数的调用(使用)。这样就出现了函数的嵌套调用,即在被使用函数中又调用其他函数。#include<

3、stdio.h>longsum(inta,intb);longfactorial(intn);main(){intn1,n2;longa;scanf("%d,%d",&n1,&n2);a=sum(n1,n2);printf("a=%1d",a);}longsum(inta,intb){longc1,c2;factorial(a);factorial(b);return(c1+c2);}longfactorial(intn){longrtn=1;inti;for(i=1;i<=n;i++)rtn*=i;return(rtn);}longsum(in

4、ta,intb);longfactorial(intn);文件包含编译预处理命令函数声明函数定义函数调用函数调用函数返回值形参实参c1=c2=longfactorial(intn){longrtn=1;inti;for(i=1;i<=n;i++)rtn*=i;return(rtn);}例2求三个数中最大数和最小数的差值#includeintdif(intx,inty,intz);intmax(intx,inty,intz);intmin(intx,inty,intz);voidmain(){inta,b,c,d;scanf("%

5、d%d%d",&a,&b,&c);d=dif(a,b,c);printf("Max-Min=%d",d);}intmin(intx,inty,intz){intr;r=xy?x:y;return(r>z?r:z);}intdif(intx,inty,intz){returnmax(x,y,z)-min(x,y,z);}f(x+y)2x+y(x<=y)g(x,y)=f(x-y)2x+y(x>y)其中:f(t)=(1+e-t)/(1+e

6、t)求result=g(2.5,3.4)。练习练习例:编写求组合数的函数。6.9.2函数的递归调用递归:一个函数直接或间接地使用自身。1.直接递归调用:函数直接调用本身2.间接递归调用:函数间接调用本身intf(intx){inty,z;……z=f(y);…….return(2*z);}intf1(intx){inty,z;……z=f2(y);…….return(2*z);}intf2(intt){inta,c;……c=f1(a);…….return(3+c);}直接调用间接调用【例1】有5个人,第5个人说他比第4个人大2岁,第4个人说他对第3个

7、人大2岁,第3个人说他对第2个人大2岁,第2个人说他比第1个人大2岁,第1个人说他10岁。求第5个人多少岁。通过分析,设计递归函数如下:10(n=1)age(n)=age(n-1)+2(n>1)递归函数:10(n=1)age(n)=age(n-1)+2(n>1)age(intn){intc;if(n==1)c=10;elsec=age(n-1)+2;returnc;}main(){intx;x=age(5);printf("%d",x);}程序如下:请看看单步运行的情况……age(5)c=age(4)+2;returnc;age(intn){in

8、tc;if(n==1)c=10;elsec=age(n-1)+2;returnc;}递归过程跟踪分析:age(4)c=age(3)+2;

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

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

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