递归函数
指一个函数的函数体中直接或间接调用了该函数本身
执行过程分为两个过程:
递推过程:从原问题出发,按递归公式递推从未知到已知,最终达到递推终止条件
回归阶段:按递归终止条件求出结果,逆向逐步代入递归公式,回归到原问题求解。
编写一个递归函数,计算n!
编写一个递归函数,计算斐波那契数列
一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月就能生出一对兔子来,如果所有兔子都不死,那么一年以后能繁殖多少对兔子?--斐波那契数列
函数指针
用来存放函数的地址,这个地址是一个函数的入口地址
函数名代表了函数的入口地址
函数指针变量说明的一般形式
<数据类型> (*<函数指针名>) (<参数说明列表>);
数据类型:是函数指针所指向的函数的返回值类型
参数说明列表:应该与函数指针所指向的函数的形参说明保持一致
(*<函数指针名称>):*说明为指针()不可缺省,表明为函数的指针
下图11行就是一种标准写法,16行是调用方法,注意
函数指针的好处:
调用函数方便
用于线程创建pthread_create
排序qsort的第三个参数输入也是一个函数指针
函数指针数组
一个保存若干个函数名的数组
一般形式如下:
<数据类型> (*<函数指针数组名称>) [<大小>](<参数说明列表>);
其中,<大小>是指函数指针数组元素个数
其他同普通的函数指针
qsort函数的使用
升序排序
第一个参数:数组地址
第二个参数:数组大小
第三个参数:数据大小
第四个参数:函数指针,指向一个函数,返回值是int类型整数(第一个小于第二个数据就是小于零),两个参数为待比较的第一个数据和二个数据
应用如下: