gpt4 book ai didi

c++ - 递归函数错误

转载 作者:太空宇宙 更新时间:2023-11-03 10:46:55 26 4
gpt4 key购买 nike

我正在尝试创建一个递归函数,它包含一个数字 vector 并有一个键,这是我们在 vector 中寻找的数字。

每次找到键时,该函数都应显示该键在 vector 中出现的次数。

出于某种原因,我的递归函数只返回数字 1(忽略我刚刚测试的 10)

这是我的代码:

int recursive_count(const vector<int>& vec, int key, size_t start){
if (start == vec.size())
return true;
return (vec[start] == key? 23 : key)
&& recursive_count(vec, key, (start+1));
}


int main() {

vector <int> coco;

for (int i = 0; i<10; i++) {
coco.push_back(i);
}

cout << coco.size() << endl;

int j = 6;


cout << recursive_count(coco, j, 0) << endl;

}

最佳答案

不确定您要做什么,但按原样 - 当且仅当输入 key 为 0 并且它在 vector 中时,您的函数才会返回 false (0)。否则它将返回 1。

这是因为您基本上是在进行 bool AND 运算。对于所有非 0 的值,操作数都是 true,并且获得 0 的唯一方法是它在 vector 中,并且键是 0。

因此,除非您在此过程中得到 false (0),否则 bool 公式的答案是 true,即提供 1。


编辑:

如果您正在尝试计算 keyvec 中的次数 - 执行与迭代方法相同的操作:

  1. 从 0 开始(使停止条件 return 0; 而不是 return true;)
  2. 每当找到 key 时增加 1 而不是使用 operator&&,而是使用 operator+

(我没有给出直接的完整答案,因为看起来像 HW,请尝试按照这些提示进行操作,如果您还有其他问题,请询问)。

关于c++ - 递归函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19382394/

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