【正确答案】每次在当前序列中取序列中点作为区域划分界限,然后对子区域分别递归地进行查找即可,代码如下:
int binsearch(int A[],int l,int h,int x)
{
int m;
if(l>h)
return -1; //未找到,返回-1
else
{
m=(l+h)/2;
if(x<A[m])
return(binsearch(A,l,m-1,x)); //在右段中查找
else if(x==A[m])
return m; //找到了,返回下标x
else
return(binsearch(A,m+1,h,x)); //在左段中查找
}
}
【答案解析】