我只能使用给定的参数。一想到要找到目标的索引,我就无法思考。有什么想法吗?
#include <stdio.h>
int RecBinarySearch(int arr[], int len, int target) {
if (len <= 0)
return 0;
int mid = len/2;
if (target == arr[mid]){
return 1;
}
if (target < arr[mid]){
int i=0;
return RecBinarySearch(arr, mid, target);
}
else {
return RecBinarySearch(arr+mid+1, len-mid-1, target);
}
}
int main(void){
int arr[6]={1,2,3,4,5,6};
int len=sizeof(arr)/sizeof(arr[0]);
int target = 5;
RecBinarySearch(arr,len,target);
}
最佳答案
#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));
}
关于c - 在 C 中使用递归二进制搜索查找目标索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49043970/