c++ - 将 int 添加到 long

标签 c++ recursion vector long-integer

我正在创建一个递归公式来将 vector 中的所有元素相加。我遇到的问题是我的结果没有添加到 vector 结果中,所以它总是返回 0。我已尝试将 static_cast 转换为 int 但我仍然无法弄清楚。这是我的代码:

long vectorSum(const std::vector<int>& data, unsigned int position) {
int ret = 0;
if(position == data.size()-1) {
      return ret;
  } else {
      ret += data[position];
      return vectorSum(data, position+1);
  }
}

我这样调用函数:

std::vector<int> test1;
for(int i = 0; i < 10; i++) {
    test1.push_back(i);
}
cout << vectorSum(test1, 0) << "\n";

最佳答案

这是不正确的:

ret += data[position];
return vectorSum(data, position+1);

ret (+= data[position]) 的新值未在任何地方使用或传递回调用者。

记住:retvectorSum() 的每次调用都是严格本地的。它不存在于您的 vectorSum() 之外;每次调用 vectorSum() 时,它都会被设置为“0”。

关于c++ - 将 int 添加到 long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42865998/

相关文章:

c++ - C++ std::vector 的两个指针替代方案

c++ - 以随机可再现顺序生成非重复字节的快速方法

c++ - 计算序列的第 n 项。为什么我会收到编译器错误?

c++ - 在 Cocos2d 中设置相对于场景的位置

c++ - 接收错误 "no matching function for call to pow(double)"

c - 在c中递归地从链表中删除元素时的无限链接循环

c++ - 在 C++ 中重新定义头文件之间的虚函数

javascript - 如何可视化斐波那契递归?

list - 方案:将列表映射为函数的参数

c++ - getline() 和 vector (C++) 的问题