我正在创建一个递归公式来将 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]
) 的新值未在任何地方使用或传递回调用者。
记住:ret
对 vectorSum()
的每次调用都是严格本地的。它不存在于您的 vectorSum() 之外;每次调用 vectorSum() 时,它都会被设置为“0”。
关于c++ - 将 int 添加到 long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42865998/