【发布时间】:2014-11-27 20:00:28
【问题描述】:
所以我正在尝试编写一个使用递归的二进制搜索函数,如果我超过数组中的两个值,则会不断出现分段错误。我已经查看了一堆其他代码,它们正在做我想做的事情,据我所知,它们似乎在做同样的事情。我是一个非常新手的程序员,感觉就像我的头撞到了墙上。任何帮助将不胜感激。
int search(int value, int array[], int start, int end)
{
//Define new variables for use in recursion
int sizeArray, middleOfArray;
//Get size of array
sizeArray = (end - start) + 1;
//Find midpoint of array based off size
middleOfArray = sizeArray / 2;
//Base Case 1, if array unscannable, return -1
if (start > end) {
return -1;
}
//Recursive Cases
else
{
//If midpoint in array is > target value,
//Search from beginning of array->one below midpoint
if (array[middleOfArray] > value){
return search(value, array, start, middleOfArray - 1);
}
//If midpoint in array is < target value,
//search from one above midpoint->end of array
else if (array[middleOfArray] < value) {
return search(value, array, middleOfArray + 1, end);
}
//If none of the other cases are satisfied, value=midpoint
//Return midpoint
else {
return middleOfArray;
}
}
}
【问题讨论】: