Linux C语言进阶-D15递归函数和函数指针

递归函数

指一个函数的函数体中直接或间接调用了该函数本身

执行过程分为两个过程:

        递推过程:从原问题出发,按递归公式递推从未知到已知,最终达到递推终止条件

        回归阶段:按递归终止条件求出结果,逆向逐步代入递归公式,回归到原问题求解。

 编写一个递归函数,计算n!

Linux C语言进阶-D15递归函数和函数指针_第1张图片

Linux C语言进阶-D15递归函数和函数指针_第2张图片

编写一个递归函数,计算斐波那契数列

         一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月就能生出一对兔子来,如果所有兔子都不死,那么一年以后能繁殖多少对兔子?--斐波那契数列

Linux C语言进阶-D15递归函数和函数指针_第3张图片

 函数指针

        用来存放函数的地址,这个地址是一个函数的入口地址

        函数名代表了函数的入口地址

        函数指针变量说明的一般形式

                <数据类型> (*<函数指针名>) (<参数说明列表>);

                数据类型:是函数指针所指向的函数的返回值类型

                参数说明列表:应该与函数指针所指向的函数的形参说明保持一致

                (*<函数指针名称>):*说明为指针()不可缺省,表明为函数的指针

下图11行就是一种标准写法,16行是调用方法,注意

Linux C语言进阶-D15递归函数和函数指针_第4张图片

 函数指针的好处:

        调用函数方便

        用于线程创建pthread_create

        排序qsort的第三个参数输入也是一个函数指针

Linux C语言进阶-D15递归函数和函数指针_第5张图片

    函数指针数组

        一个保存若干个函数名的数组

        一般形式如下:

                <数据类型> (*<函数指针数组名称>) [<大小>](<参数说明列表>);

                其中,<大小>是指函数指针数组元素个数

                其他同普通的函数指针

Linux C语言进阶-D15递归函数和函数指针_第6张图片

 qsort函数的使用

升序排序

第一个参数:数组地址

第二个参数:数组大小

第三个参数:数据大小

第四个参数:函数指针,指向一个函数,返回值是int类型整数(第一个小于第二个数据就是小于零),两个参数为待比较的第一个数据和二个数据

应用如下:

Linux C语言进阶-D15递归函数和函数指针_第7张图片

你可能感兴趣的:(Linux,c语言,c语言,开发语言)