求帮我看看,这怎么出错了

#include
search(int arr,int left,int right,int find){

int midnum=(left+right)/2;
int zeronum=arr[midnum];
if(left>right){
    return -1;
}
if(findsearch(arr,left,midnum-1,find);
} else if(find>zeronum){
    search(arr, midnum+1,right,find);
}else{
    return midnum;
}

}
int main() {
int arr[] = {1, 3, 5, 6, 7, 8, 9, 10, 1000, 100000};
int num = search(arr, 0, 9, 10);
if (num == -1) {
printf("没有找到");
} else {
printf("找到了,位置在%d", num);
}
getchar();
}

传的第一个参数为数组应该使用指针而不是int arr(变量),把int arr改成int* arr即可

img

#include<stdio.h>
int search(int* arr,int left,int right,int find){   // 传的第一个参数为数组应该使用指针而不是int arr(变量)

    int midnum=(left+right)/2;
    int zeronum=arr[midnum];
    if(left>right){
        return -1;
    }
    if(find<zeronum){
        search(arr,left,midnum-1,find);
    } else if(find>zeronum){
        search(arr, midnum+1,right,find);
    }else{
        return midnum;
    }
}
int main() {
    int arr[] = {1, 3, 5, 6, 7, 8, 9, 10, 1000, 100000};
    int num = search(arr, 0, 9, 10);
    if (num == -1) {
        printf("没有找到");
    } else {
        printf("找到了,位置在%d", num);
    }
    getchar();
}

题主用的是二分查找,哪里报错了,题主可以贴出来。
题主可以查查二分查找相关的写法,不过单从直观来看,题主这问题不大。

我写的也有类似解法的文章,题主可以参考。
https://yueliusu.blog.csdn.net/article/details/126670329?spm=1001.2014.3001.5502