小编Nar*_*lok的帖子

C:递归函数 - 二进制搜索

我正在尝试构建一个递归函数,它通过与中间值进行比较并根据相对大小继续返回已排序数组中的地址.如果值不在数组中,则应该只打印NULL.现在函数的第一部分工作,但是每当发生null时我都会遇到分段错误.代码如下:

#include <stdio.h> 

int *BinSearchRec(int arr[], int size, int n){
  if(n==arr[size/2]){
    return &arr[size/2];
  } 

  else if(n>arr[size/2]) {
    return(BinSearchRec(arr, size+size/2, n));
  }

  else if(n<arr[size/2]) {
    return(BinSearchRec(arr, size-size/2, n));
  }

  else{
    return NULL;                    
  }
 }

 main(){
    int numb[]={2,7,8,9};

 if((int)(BinSearchRec(numb, 4, 22)-numb)>=0)   {
    printf("Position: %d \n", (int)(BinSearchRec(numb, 4, 22)-numb)+1);
    }

     else{
       printf("NULL \n");
     }

  }
Run Code Online (Sandbox Code Playgroud)

c segmentation-fault

0
推荐指数
1
解决办法
111
查看次数

标签 统计

c ×1

segmentation-fault ×1