一、一层一层返回
return:从被调用函数返回到主调函数中继续执行,并非一遇到return整个递归结束。
二、对于又返回值得函数递归调用必须要有return
下面举例说明:
int BinarySearchRecursion(int arry[],int value,int start,int end)
{
if(start > end)
return -1;
int mid = start+(end-start)/2;
if(arry[mid] == value)
return mid;
else if(value < arry[mid])
BinarySearchRecursion( arry, value, start, mid-1 );
else
BinarySearchRecursion( arry, value, mid+1, end );
}
int main(int argc, char *argv[])
{
int a[] = {1,2,3,4,5,6};
int target = 3;
printf("%d\n",BinarySearchRecursion(a, target, 0, sizeof(a)/sizeof(a[0])));
system("pause");
return 0;
}
程序输出为:1894099840
只需要添加上return就OK了
int BinarySearchRecursion(int arry[],int value,int start,int end)
{
if(start > end)
return -1;
int mid = start+(end-start)/2;
if(arry[mid] == value)
return mid;
else if(value < arry[mid])
return BinarySearchRecursion( arry, value, start, mid-1 );
else
return BinarySearchRecursion( arry, value, mid+1, end );
}
int main(int argc, char *argv[])
{
int a[] = {1,2,3,4,5,6};
int target = 3;
printf("%d\n",BinarySearchRecursion(a, target, 0, sizeof(a)/sizeof(a[0])));
system("pause");
return 0;
}
程序输出:2
另:如果函数返回类型为void,则无需return。