递归二进制搜索函数缺少什么? (C)

时间:2017-01-24 18:39:12

标签: c function recursion binary-search

我正在尝试创建一个在排序数组上进行二进制搜索的函数。我检查了一切,一切正常,除了一件事:

如果我没有在函数的末尾放置一个return语句,而不是被If包围,它将不会构建我的程序。如果我把'return 0',它总是会返回0,无论如何。如果我对1做同样的事情,它总会返回1,我看不出我的问题在哪里。会喜欢一些帮助。

#include <stdio.h>
#define N 4
int search_matrix(int a[N][N], int x);
int binsearch(int a[], int x, int low, int high);
int main(){
    int a[N][N];
    printf("Please Enter Matrix : \n");
    for(int i=0;i<N;i++){
        for(int j=0;j<N;j++){
            scanf("%d",&a[i][j]);
        }//forj
    }//fori
    printf("Please enter x : \n");
    int x;
    scanf("%d",&x);

    printf("%d\n",search_matrix(a,x));
    return 0;
}
int search_matrix(int a[N][N], int x){
    if(x>a[0][N-1]||x<a[N-1][0])
        return 0;

    int savedIndex=0;
    for(int i=0;i<N;i++){
        if(x>a[i][0]){
            savedIndex=i;
            break;
        }
    }//for

    return(binsearch(a[savedIndex],x,0,N));

}//search_matrix

//------- THE PROBLEMATIC FUNCTION! ---------
int binsearch(int a[], int x, int low, int high) {
   int mid;
   if (low > high)
      return 0;
   mid = (low + high) / 2;
    if (x == a[mid]) {
      return 1;
   } else if (x < a[mid]) {
      binsearch(a, x, low, mid - 1);
   } else {
      binsearch(a, x, mid + 1, high);
   }


}

1 个答案:

答案 0 :(得分:0)

检查出来:

# enabling mod_rewrite
RUN cp /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/