当我尝试编译包含线性搜索函数声明的 c 文件时,出现了此错误
bool search(int value, int values[], int n)
{
// TODO: implement a searching algorithm
for(int d = 0;d<n;d++){
if(n<0){
return false;
}
else if(values[d]==value){
return true;
}
else{
return false;
}
}
}
我的代码有什么问题吗?请帮忙。
最佳答案
代码的一些问题:
- 当参数
n = 负数或 0 时,该方法有一个不返回任何内容的路径,如注释所示
- for 循环不执行任何操作,只会执行一次并在满足其中一个条件时退出。仅当第一个元素是搜索的元素时,它才会正确工作,在任何其他情况下,仅检查第一个元素并返回(没有存在或不存在的正确信息)。使用数组
int value[] = { 1, 2, 3, 4, 5 };
进行测试并搜索3
,您的代码将找不到该值。
如果您要搜索特定值,则代码为:
bool search(int value, int values[], int n) {
for (int d = 0; d < n; d++) {
if (values[d] == value) {
return true;
}
}
return false;
}
关于c - 错误: control may reach end of non-void function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25669541/