P115 例6-2 给出在有序数组a中查找数据元素x是否存在的递归算法,并说明递归算法的执行过程。
#include<stdio.h>
int BSearch(int a[],int x,int low,int high)
{
int mid;
if(low>high)
return -1;
mid=(low+high)/2;
if(x==a[mid])
return mid;
else if(x<a[mid])
return BSearch(a,x,low,mid-1);
else
return BSearch(a,x,mid+1,high);
}
int main()
{
int a[]={1,3,4,5,17,18,31,33};
int x=17;
int bn;
bn=BSearch(a,x,0,7);
if(bn==-1)
printf("x不在数组a中");
else
printf("x在数组a中,下标为%d",bn);
return 0;
}