简单理解,函数自己调运自己就叫做递归。
为了加深理解,现在用递归的方法求一个数组的最大值,代码如下:
#include<stdio.h>
int get_max(int array[],int L,int R);
int main(void)
{
int max;
int array1[5]={1,2,3,4,5};
max=get_max(array1,0,4);
printf("%d",max);
return 0;
}
/*L为数组区间最左侧下标,R为数组区间最右侧下标 */
int get_max(int array[],int L,int R)
{
int left_max,right_max,mid;
if(L=R)
{
return array[L];
}
mid=L+(R-L)>>1;/*区间中间的位置*/
left_max=get_max(array,L,mid);
right_max=get_max(array,mid+1,R);
if(left_max>=right_max)
{
return left_max;
}
else
{
return right_max;
}
}
可以通过master公式衡量递归运算的时间复杂度。不过就不详细记录公式类的知识了,以后通过百度复习。