#include <stdio.h>
int RecBinarySearch(int arr[], int len, int target) {
if(len <= 0) return -1;
int mid = len / 2;
if(arr[mid] == target) return mid;
if(arr[mid] < target) {
int rightIndex = RecBinarySearch(arr+mid+1, len-mid-1, target);
return rightIndex == -1 ? -1 : mid+rightIndex+1;
} else {
int leftIndex = RecBinarySearch(arr, mid, target);
return leftIndex == -1 ? -1 : leftIndex;
}
}
int main(void){
int arr[6]={1,2,3,4,5,6};
int len=sizeof(arr)/sizeof(arr[0]);
int target = 5;
printf("%d", RecBinarySearch
(arr
,len
,target
)); }
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgUmVjQmluYXJ5U2VhcmNoKGludCBhcnJbXSwgaW50IGxlbiwgaW50IHRhcmdldCkgewoJaWYobGVuIDw9IDApIHJldHVybiAtMTsKCWludCBtaWQgPSBsZW4gLyAyOwoJaWYoYXJyW21pZF0gPT0gdGFyZ2V0KSByZXR1cm4gbWlkOwoJaWYoYXJyW21pZF0gPCB0YXJnZXQpIHsKCQlpbnQgcmlnaHRJbmRleCA9IFJlY0JpbmFyeVNlYXJjaChhcnIrbWlkKzEsIGxlbi1taWQtMSwgdGFyZ2V0KTsKCQlyZXR1cm4gcmlnaHRJbmRleCA9PSAtMSA/IC0xIDogbWlkK3JpZ2h0SW5kZXgrMTsKCX0gZWxzZSB7CgkJaW50IGxlZnRJbmRleCA9IFJlY0JpbmFyeVNlYXJjaChhcnIsIG1pZCwgdGFyZ2V0KTsKCQlyZXR1cm4gbGVmdEluZGV4ID09IC0xID8gLTEgOiBsZWZ0SW5kZXg7Cgl9Cn0KCmludCBtYWluKHZvaWQpewogICAgaW50IGFycls2XT17MSwyLDMsNCw1LDZ9OwogICAgaW50IGxlbj1zaXplb2YoYXJyKS9zaXplb2YoYXJyWzBdKTsKICAgIGludCB0YXJnZXQgPSA1OwogICAgcHJpbnRmKCIlZCIsIFJlY0JpbmFyeVNlYXJjaChhcnIsbGVuLHRhcmdldCkpOwp9