#include <iostream>
using namespace std;
int BinarySearch(int *a,int p,int r,int v)
{
if(p<r)
{
int q=(p+r)/2;
//重复证明不存在要找的解
if(q==p||q==r)
{
return -1;
}
//对于最小单元的处理(最小单元就是两个数)
if(a[q]==v)
return q;
if(a[q+1]==v)
return q+1;
if(a[q]>v)
{
//任何一处递归返回都会导致整个函数的返回
return BinarySearch(a,p,q,v);
}
if(a[q]<v)
{
return BinarySearch(a,q,r,v);
}
}
else
return -1;
}
int main()
{
int a[10]={0,1,2,3,4,5,6,7,8,9};
int t=BinarySearch(a,0,9,3);
cout<<t<<endl;
int i=BinarySearch(a,0,9,10);
cout<<i<<endl;
return 0;
}