【发布时间】:2016-02-23 12:26:55
【问题描述】:
关于实现二分搜索的快速问题 :-)。这是我现在拥有的功能,我还没有完全弄清楚为 i 传递正确数字的逻辑。但是,当我调试这个函数时,我发现当value = values[i] (match)时,出现了意想不到的行为。
我的意图是返回 true,从而触发匹配并退出函数。实际行为结果返回 true; 然后返回false; (错误地)。有谁知道如何确保返回 true;退出函数?或指导我走向错误的提示?非常感谢!
bool search(int value, int values[], int n){
int i = ((n - 1) / 2);
if(value == values[i])
{
return true;
}
else if(value < values[i])
{
n = i;
search(value, values, n);
}
else if(value > values[i])
{
n = (i * 1.5);
search(value, values, n);
}
return false;
}
【问题讨论】:
-
True 返回。然后调用者忽略 true 并返回 false。然后,调用者会忽略 false 并返回 false。以此类推,回到顶层。
标签: c binary-search