【发布时间】:2013-07-24 18:06:59
【问题描述】:
这是一个带有递归二分查找算法的 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);
}
}
谢谢你:)
【问题讨论】:
-
你知道 seqfaulting 到底在哪里吗?能否尝试将最后一个条件移到函数顶部,看看是否修复?
-
函数怎么调用? 哪里 崩溃(在哪一行)?你能显示调试器的回溯吗?
-
您不能确保低实际上低于高。为此添加一个测试。
-
@KarthikT 非常感谢,它成功了 :)
-
@MichaelFerashireSilva 太棒了!不客气!
标签: c arrays recursion binary-search