函数3

函数3小结

1.函数的声明和定义

2.函数的嵌套调用 和 链式访问

3.函数递归

3.1递归与迭代

1.函数的声明和定义

①编译器是顺序编译,如果将自定义函数放于主函数之后,需要先声明一下。声明主要是返回类型 函数名称 参数 例如:int add(int x, int y)

②一般声明放在头文件中,直接引用即可。例:#include "add.h"

定义:类似于该函数的说明书,说清楚函数的返回类型,返回结果,参数类型,等等。

2.函数的嵌套调用 和 链式访问

函数的嵌套调用:一个函数主体不能定义两个函数,但可以调用函数。一个函数里调用另一个函数。例:

void test(x)

{

   printf("hhhh");

}

链式访问则是一个函数的参数是另一个函数的返回值;例:

printf("%d",printf("%d",printf("%d",43)));

这样的打印结果是4321;因为printf("%d",43)的返回值是打印数43的个数。即为2,2的返回结果是1。

3.递归

递归即自己引用自己;核心思想是将大事化小,事件间有类似的嵌套处理方式;

例如输入1234 打印1 2 3 4

一层层传参数值下去,直到最后递归结束。开始逐层返回执行符合条件的语句

递归需要注意的两个必备条件:

①需要有限制条件,且函数调用后会越来越接近限制条件,直到跳出条件;

②需要注意深度。由于栈区内存有限,防止栈溢出;每次调用函数都要分配一块空间,叫栈帧空间;当层次不断深入时,也会分配新的空间,这时就会出现栈溢出。


3.1递归与迭代

迭代其实也是用循环语句,不断有一个新值代替旧值;算第n个斐波那契数值时,用迭代明显优于递归;有时候递归需要重复计算多次,运算次数过多。


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容