我正在尝试创建一个简短的线性搜索算法,但不断收到错误消息控件可能会达到非空函数结束-wreturn-type 。我知道错误与在循环之外放置返回有关,但是如何从循环中获取返回值呢?
以下是代码:
bool search(int value, int values[], int n)
{
for(int i=0; i<values[n]; i++)
{
if (values[i] == value)
{
printf("%i was found.", value);
return true;
}
else if (values[i] != value)
{
printf("%i was not found.", value);
return false;
}
else if (value <= 0)
{
printf("%i is not a positive number.", value);
return false;
}
else
return false;
}
}
答案 0 :(得分:4)
在函数开始时0<values[n]
为假的情况将导致循环永远不会被迭代,因此控制到达终点。
简单的解决方案是将return false;
添加到函数的末尾。
在我看来,无论价值如何,循环只会有一次迭代,所以我不认为代码能够做到你想要的。这就是我认为你的意图。查看循环之外的代码如何在搜索之前进行评估,然后在搜索之后找不到任何内容。从问题中可以清楚地看到,您需要更多地了解代码的控制流程以及返回语句的作用。
bool search(int value, int values[], int n)
{
if (value <= 0)
{
printf("%i is not a positive number.", value);
return false;
}
for(int i=0; i<n; i++)
{
if (values[i] == value)
{
printf("%i was found.", value);
return true;
}
}
printf("%i was not found.", value);
return false;
}