J
junw2000
I wrote a simple binary search function:
int binary_serach_R(int a[], int k, int l, int r){
int m = (l+r)/2;
if(a[m] == k){
std::cout<<"return a[m] "<<a[m]<<'\n'; //LINE1
return a[m]; //LINE2
}
if(l == r) return -1;
// std::cout<<a[m]<<" "<<l<<" "<< m<<" "<<r<<'\n';
if(a[m] > k) binary_serach_R(a, k, l, m);
else binary_serach_R(a, k, m, r);
}
LINE1 can always output a correct value. But LINE2 always returns a
random value,
like -1207956288. What is the problem?
Thanks.
Jack
int binary_serach_R(int a[], int k, int l, int r){
int m = (l+r)/2;
if(a[m] == k){
std::cout<<"return a[m] "<<a[m]<<'\n'; //LINE1
return a[m]; //LINE2
}
if(l == r) return -1;
// std::cout<<a[m]<<" "<<l<<" "<< m<<" "<<r<<'\n';
if(a[m] > k) binary_serach_R(a, k, l, m);
else binary_serach_R(a, k, m, r);
}
LINE1 can always output a correct value. But LINE2 always returns a
random value,
like -1207956288. What is the problem?
Thanks.
Jack