gpt4 book ai didi

CS50 Pset 3 找到针

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

我意识到,当我在 bool 搜索中包含“else return false”时,它永远无法“找到针”。相反,如果我要删除那部分,程序就可以正常工作。它能够找到 2008 而找不到 2013。知道为什么会这样吗?

 /**
* helpers.c
*
* Computer Science 50
* Problem Set 3
*
* Helper functions for Problem Set 3.
*/

#include <cs50.h>

#include "helpers.h"

/**
* Returns true if value is in array of n values, else false.
*/

//value = needle , values[] = haystack, n = size
bool search(int value, int values[], int n)
{
// TODO: implement a searching algorithm
if(n<0)
return false;


for(int i=0;i<n;i++)
{
if(value == values[i])
{
return true;
}

else
{
return false;
}


}
return false;
}

/**
* Sorts array of n values.
*/
void sort(int values[], int n)
{
// TODO: implement an O(n^2) sorting algorithm
return;
}

最佳答案

仔细看代码:

for(int i=0;i<n;i++)
{
if(value == values[i])
{
return true;
}

else
{
return false;
}


}

循环体总是从函数返回——因此它只会运行一次(假设n > 0)。这与测试 value 是否在大海捞针的第一个位置是一样的。

如果去掉else分支,循环体中的代码只有找到值时才返回。如果未找到,它将检查下一个元素,然后再检查下一个元素,直到找到它或用完所有元素。

关于CS50 Pset 3 找到针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30708129/

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