c - 在 C 中使用递归二进制搜索查找目标索引

标签 c recursion binary-search

我只能使用给定的参数。一想到要找到目标的索引,我就无法思考。有什么想法吗?

#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);
}

最佳答案

Ideone link

#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/

相关文章:

python - 如何递归打印变量的内容,包括数据和对象属性?

c - 递归二分查找c

c - 在目录中搜索特定扩展名并将该值移至 c 中的变量中

c - Linux 原始套接字

c - 如何编写一个递归函数来返回 BST 中的最小值?

regex - 编写没有递归规则的正则表达式

java - 在对象中实现二分查找

C# 二进制搜索变体

javascript - 在 Raspberry Pi 上从网络控制 C 程序

c - 检测 "forward references to ‘enum’ 类型的 gcc 选项”