u013052928 于 2016.02.23 16:53 提问

c return 出错。求解答

``````#include<stdio.h>

int binary_Search(int a[],int low,int high,int key){
if(low>high) return -1;
else{
int mid=low+(high-low)/2;
printf("low=%d,mid=%d,high=%d\n",low,mid,high);
if(a[mid]==key) {
printf("a[mid]=%d,mid=%d\n",a[mid],mid);
return mid;
}
if(a[mid]<key)
binary_Search(a,mid+1,high,key);
if(a[mid]>key)
binary_Search(a,low,mid-1,key);
}
}

int main(){
int a[]={0,1,2,3,4,5,6,7,9,10,11,12,13,14,15,16};
int result;
result=binary_Search(a,0,16,2);
printf("result=%d\n",result);
return 0;
}
``````

5个回答

hyb1996   2016.02.23 20:10

if(a[mid]key) return binary_Search(a,low,mid-1,key);

u013052928 3Q~

hxm_ss5224   2016.02.23 17:09

if(a[mid] binary_Search(a,mid+1,high,key);

u013052928 第一次发帖，，没搞好，现在改了。

Royal_lr      2016.02.23 17:08

u013052928 mid在return之前的值是2，为什么result接收到的是1。

hxm_ss5224 你这句是想干啥呀

hyb1996   2016.02.23 20:12

if(a[mid]＜key) return binary_Search(a,mid+1,high,key); if(a[mid]＞key) return binary_Search(a,low,mid-1,key);

u013052928 嗯嗯，自己粗心了。O(∩_∩)O谢谢

u013052928   2016.02.23 20:37