1 / 7
文档名称:

第11讲 函数与变量(2).ppt

格式:ppt   页数:7页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第11讲 函数与变量(2).ppt

上传人:中国课件站 2011/9/6 文件大小:0 KB

下载得到文件列表

第11讲 函数与变量(2).ppt

文档介绍

文档介绍:第十一讲函数与变量
函数的嵌套调用
函数的递归调用
数组作为函数参数
函数的嵌套调用
C语言中允许一被调函数再调用其他函数,称为嵌套调用。
函数的嵌套调用。
main( )
{a1();
a2();
a3();
print(“44444444\n”);
}
a1()
{
printf(“11111111\n”);
}
a2();
{
printf(“22222222\n”);
}
a3()
{
printf(“33333333\n”);
}
在键盘上输入三个整数,求其最大数。
Main()
{int a,b,c,x;
Int max(int,int);
Printf(“a,b,c=?);
Scanf(“%d,%d,%d”,&a,&b,&c);
X=max(a,b);
X=max(x,c);
Printf(“max= %d\n”,x);
}
Int max(x,y)
Int x,y;
{int z;
Z=x>y? x:y;
Return(z);
}
main函数 a函数 b函数
调用a函数调用b函数

结束









其执行过程是:
(1)执行main函数的开头部分。
(2)遇函数调用a的操作语句,流程转去a函数。
(3)执行a函数的开头部分。
(4)遇到调用b函数的操作语句,流程转去b函数。
(5)执行b函数,如果再无其化的嵌套函数,则完b函数的全部操作。
(6)返回调用b函数处。
(7)继续执行a函数中尚末执行的部分。直到a函数结束。
(8)返回main函数中调用a函数处。
(9)继续执行main函数的乘余部分直到结束。
函数的递归调用
在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。
例如:直接调用本函数。
int f(x)
int x;
{int y z;

z=f(y);

return(2*z);
}
f函数
调用f函数
f1函数 f2函数
调用f2函数调用f1函数
例如:间接调用本函数。
int f1(x) int f1(x)
int x; int t;
{int y,z; {int a,c;
┆┆
z=f2(y); z=f1(y);
┆┆
return(2*z); return(2+c);
} }
用递归方法求n! 即计算f(n)=n!的值。
可用递推方法:即从1开始,乘2,乘3,……一直乘到n。
递归方法:
下推: f(5)=5*f(4) 回代: f(5)=5*4*3*2*1
f(4)=4*f(3) F(4)=4*3*2*1
f(3)=3*f(2) f(3)=3*2*1
f(2)=2*f(1) f(2)=2*1
f(1)=1,f(0)=0
程序如下:
long fac(n)
int n;
{long f;
if(n<0) printf(“n<o,data error!”);
else if (n==0||n==1)return 1;
else return(fac(n-1)*n);
}
main()
{int n;
long y;
printf(“n=“);
scanf(“%d”,&n);
y=fac(n);
printf(“