gpt4 book ai didi

c - 线性搜索未返回正确的索引

转载 作者:太空宇宙 更新时间:2023-11-04 06:51:46 25 4
gpt4 key购买 nike

我的线性搜索总是返回 -1,我不知道为什么。我试着弄清楚但没有成功。搜索功能每次都转到“else”分支,“then”永远不会执行。

#include <stdio.h>
#include <stdlib.h>
#define size 50000

int search(int n,int s,int v[s])
{
int i;
for(i=0;i<s;++i)
{
if(v[i]==n)
return i;
else
return -1;
}
}

int main(void)
{
int valores[size];
//start the vector and put values in it.
for(int i=0;i<size;++i)
valores[i]=(i+1)*2;
//search the 50000 values
for(int i=1;i<=size +1;++i)
{
int p=search(2*i,size,valores);
if(p==-1)
printf("Not found %d\n",i);
else if(valores[p]!=2*i)
printf("Found %d in wrong index: %d\n",i,p);
}

return 0;
}

最佳答案

您总是在第一个索引 0 之后离开您的搜索功能;
因为在 0 时它要么相同并返回 i,要么不相同并返回 -1。
如果您将 n 设为 v[0],我假设它会返回 0,而不是 -1。
以这种方式更改:

for(i=0;i<s;++i)
{
if(v[i]==n)
return i;
}
return -1;

您会收到评论中提到的警告(“控件到达非空函数的末尾”),因为函数的最后没有 return。它当然是无法访问的,但警告可能是发现问题的提示。

关于c - 线性搜索未返回正确的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50194626/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com