内容正文:
第6章 函数
6.1函数概述
6.2函数的定义和说明
6.3函数的调用
6.4函数的参数
6.6变量的存储类型
6.5函数的嵌套调用与递归调用
大学C/C++语言程序设计程序设计 第6章 函数
6.5.1 函数的嵌套调用
函数的嵌套调用是指,在执行被调用函数时,被调用函数又调用了其它函数。
大学C/C++语言程序设计程序设计 第6章 函数
例: 求三个数中最大数和最小数的差值
思路:
1.设计max函数求3个数最大值,min函数求3个数最小值;
2.设计dif函数,调用max函数和min函数,求出最大数和最小数的差值 ;
3.设计main函数调用dif,输出差值。
大学C/C++语言程序设计程序设计 第6章 函数
int max(int x,int y,int z) //求x,y,z的最大值
{ int r;
r=x>y?x:y; // r为x、y的最大值;
return(r>z?r:z); //返回r,z中的最大值;
}
int min(int x,int y,int z ) //求x,y,z的最小值
{ int r;
r=x<y?x:y;
return(r<z?r:z);
}
int dif(int x,int y,int z)
{ return max(x,y,z)-min(x,y,z); /*嵌套调用*/}
void main()
{ int a,b,c,d;
scanf("%d%d%d",&a,&b,&c);
d=dif(a,b,c); /*调用函数dif*/
printf("Max-Min=%d
",d);
}
大学C/C++语言程序设计程序设计 第6章 函数
大学C/C++语言程序设计程序设计 第6章 函数
函数的嵌套调用注意事项:
1、当程序中有多个函数时,尽量被调函数定义在前,主调函数定义在后,以方便调用。
2、每次被调函数调用结束(遇到return或者函数的}),都是回到主调函数调用被调函数的位置。
大学C/C++语言程序设计程序设计 第6章 函数
6.5.2 函数的递归调用
函数的递归调用是嵌套调用的特殊形式。一个函数在它的函数体内,直接或间接地调用自己称为函数的递归调用。
大学C/C++语言程序设计程序设计 第6章 函数
6.5.2 函数的递归调用
一个正确的递归调用的函数必须满足以下条件:
1、一个问题转化成一个新问题,解题方法相似,只是所处理的对象的值有规律的递增或递减。
2、可以应用这个转换过程使问题得到解决。
3、必须有明确的结束递归的条件;
注意:一定要有递归出口(一个初值)。
大学C/C++语言程序设计程序设计 第6章 函数
(1) 直接递归
在fac函数运行过程中,又要调用fac函数。
fac(int n) /*f函数定义*/
{ …
t=fac(n-1)*n; /*直接调用它本身*/
…
}
大学C/C++语言程序设计程序设计 第6章 函数
(2) 间接递归
大学C/C++语言程序设计程序设计 第6章 函数
分析问题2种方法:递推和递归
递推:从一个初值出发,按一定的规律推出下一步结果,以此类推,直到达到问题的结果为止。
一般通过循环结构实现,循环的终值是问题的结果。
大学C/C++语言程序设计程序设计 第6章 函数
0!=1
1!=0!×1
2!=1!×2
3!=2!×3
………………..
n!=(n-1)!*n 其中,n!就是所求。
一般用循环实现
例: 求n的阶乘n!
…..
s=1 ;
scanf("%d",&n) ;
for(i=1;i<=n;i++)
s=s*i;
………..
大学C/C++语言程序设计程序设计