【发布时间】:2017-09-10 19:38:34
【问题描述】:
我正在尝试实现二进制搜索,其中 n 是我的数组的大小并且它不适用于递归,只有当我不使用递归时它才有效,我似乎不明白为什么
int mid = 0;
int low = 0;
bool search(int value, int values[], int n)
{
do
{
mid = (low + n)/2;
if(values[mid] == value)
{
return true;
}
else if (values[mid]>value)
{
n= mid -1;
return search(value, values, n);
}
else if (values[mid]<value)
{
low = mid + 1;
return search(value, values, low);
}
}
while (n > low);
return false;
}
【问题讨论】:
-
如果使用递归,是否需要 do while 循环?
-
搜索的函数头必须是这样的吗?还是我们可以让它只是 bool search(int value, int values[])?
-
或者 bool search(int value, int values[], int low, int high)?