六、函数的返回值
函数的值(或称函数返回值)是指函数被调用之后,执行函数体中的程序段所取得的并返回给主调函数的值。 使用注意事项 1) 函数的值只能通过return语句返回主调函数。 2) 函数返回值的类型和return实际返回的值类型应保持一致。如果两者不一致,则以return 实际类型为准,自动进行类型转,最后转换成返回值类型返回. 3) 如函数值为整型,在函数定义时可以省去类型说明。 也就是说如果没有指定返回类型, 那么C语言默认是int的类型(开发中不要省略返回值类型) 4) 不返回函数值的函数,可以明确定义为“空类型”,类型说明符为“void”。 为了使程序 有良好的可读性并减少出错, 凡不要求返回值的函数都应定义为空类型。 七、函数的嵌套使用
C语言中不允许作嵌套的函数定义。因此各函数之间是平行的,不存在上一级函数和下一级函数的问题。但是C语言允许在一个函数的定义中出现对另一个函数的调用。这样就出现了函数的嵌套调用。即在被调函数中又调用其它函数。这与其它语言的子程序嵌套的情形是类似的。 [objc] view plain copy
- int sum(int x,int y){
- int z = x + y;
- return z;
- }
-
- int main(int argc, const charchar * argv[]) {
-
-
- int s1 = sum(sum(3, 4), 5);
- printf("%d\n",s1);
- return 0;
- }
八、递归函数
一个函数在它的函数体内调用它自身称为递归调用。这种函数称为递归函数。 递归函数构成条件: 1)自己调用自己 2)存在一个条件能够让递归结束3)问题的规模能够缩小
递归函数的执行有两个阶段: 1)递推阶段:问题规模缩小的过程 2)回归迭代:迭代计算值得过程 递归的优点和缺点: 优点是:遇到问题规模能够缩小,而且有规律的问题的时候,代码比较简洁 缺点:消耗内存,建议在程序中不能用太多 递归举例:求N的阶乘
[objc] view plain copy
- #include <stdio.h>
- int jiecheng(int n ){
- int jie;
- //判断是否等于1
- if(n==1){
- jie = 1;
- }else{
- jie = jiecheng(n-1)*n;
- }
- return jie;
- }
- int main(int argc, const charchar * argv[]) {
- // 用递归求N的阶乘
- // 5!=4!*5
- // 4!=3!*4
- // ...
- // n!=(n-1)!*n
- int s = jiecheng(5);
- // 打印结果
- printf("%d\n",s);
- return 0;
- }
|