return在递归调用时需注意的地方

一、一层一层返回

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。



你可能感兴趣的:(数据结构与算法,c,c语言,排序算法)