递归中的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。

你可能感兴趣的:(Java,递归)