gpt4 book ai didi

c - bool 变量正在变化,不知道为什么——C语言

转载 作者:行者123 更新时间:2023-11-30 17:12:36 24 4
gpt4 key购买 nike

我编写了一个 main 函数来测试 searchRecursive,它接受一个值(要搜索)、一个数组和一个表示数组大小的 int。运行下面的代码时,found 的值为 false。我不明白这一点。 #2 显然在下面的数组中,因此它应该返回 true。

程序运行结果:

This should return true
0

如果您查看上面运行此程序的结果,您将看到该 block 已到达应返回 true 的位置,但它从 main 函数打印 0,这意味着它是 false。

bool found = false;

int main(void)
{
int values[5]={1,2,3,4,5};

found = (search (2, values, 5));
printf("%d\n", found);
}

/**
* Returns true if value is in array of n values, else false.
*/
bool search(int value, int values[], int n)
{

// if int isn't positive, return false
if (n < 0)
{
return false;
}
else
{
return (searchRecursive(value, values, n));
}
}

bool searchRecursive(int value, int values[], int n)
{
// if the first value of array matches the value, return true
if (values[0] == value)
{
return true;
}

// if the first value of the array doesn't match the value and the
// length is 1, return false
else if ((values[0] != value && n==1) || n<1)
{
return false;
}

// if n is greater than 1 and value is greater than midpoint, divide
// array, reassign value of n and call searchRecursive
else if (n > 1)
{
int midpoint = n/2;
int newSize = midpoint;

if (value == values[midpoint])
{
printf("This should return true\n");
return true;
}

else if (value > values[midpoint])
{
int array[midpoint-1];

for (int x=0; x < newSize; x++)
{
array[x] = values[midpoint + 1];
midpoint++;
}

searchRecursive(value, array, midpoint);
}

else if (value < values[midpoint])
{
int array[midpoint];

for (int x=0; x < midpoint; x++)
{
array[x] = values[x];
}

searchRecursive(value, array, midpoint);
}
else
{
return false;
}
}
else
{
return false;
}
return false;
}

最佳答案

更改这些行

searchRecursive(value, array, midpoint);

return searchRecursive(value, array, midpoint);

您必须返回递归调用的结果。

关于c - bool 变量正在变化,不知道为什么——C语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31421602/

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