这是一个带有递归二进制搜索算法的 C 程序,但是当我运行它时,调试器说二进制搜索函数中存在访问段错误。为什么会这样,我该如何解决?
这是递归二分查找函数:
int binSearch(int val, int numbers[], int low, int high)
{
int mid;
mid=(low+high)/2;
if(val==numbers[mid])
{
return(mid);
}
else if(val<numbers[mid])
{
return(binSearch(val, numbers, low, mid-1));
}
else if(val>numbers[mid])
{
return(binSearch(val, numbers, mid+1, high));
}
else if(low==high)
{
return(-1);
}
}
谢谢你:)
最佳答案
你必须检查low == high
之前 val < ...
和 val > ...
因为否则high
可能会小于 low
所以你的下一个递归可能会计算出一个无效的 mid
关于c - C中递归二进制搜索算法中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17830282/