<分区>
我想在递归中编写二进制搜索代码。我首先写下这个:
int rSearch(int numbers[],int start, int end, int x){
int mid;
if(start <= end){
mid = (start + end)/2;
if(numbers[mid] == x)
return mid;
else if(numbers[mid] > x)
rSearch2(numbers, start, mid-1, x);
else
rSearch2(numbers, mid+1, end, x);
} else
return -1;
}
而且它工作完美。但是在我搜索之后我明白我必须写这样的代码:
int rSearch2(int numbers[],int start, int end, int x){
int mid;
if(start <= end){
mid = (start + end)/2;
if(numbers[mid] == x)
return mid;
else if(numbers[mid] > x)
return rSearch2(numbers, start, mid-1, x);
else
return rSearch2(numbers, mid+1, end, x);
} else
return -1;
}
因为在第一段代码中我们可能没有返回值。
我的问题是为什么第一个代码有效?