首先,对不起,如果代码出来很奇怪。按照此处的共享说明进行操作后看起来不错,但这是我第一次。无论如何,我都有一个类分配,需要在其中创建一个递归函数,当给定一个数组时,该递归函数将返回其元素的总和。我已经找到了可以在网上使用的解决方案,但它们看起来与我的相似。我的代码运行,但是总和以一个巨大的整数形式出现,特别是总和输出下方的代码为-858993459。我之前也看过类似的东西,但我尝试过可能是一个常见的错误,但至少没有找到任何东西。请帮忙解释发生了什么,我想使用设置的参数(我已经以其他方式看到过),因为我希望我的代码至少是唯一的。预先感谢大家!
#include <iostream>
#include <array>
#include <string>
using namespace std;
int getSumOfElements(int intArray[], int firstElement, int lastElement, int sum) {
if (firstElement > lastElement)
return sum;
else {
sum += intArray[firstElement] + intArray[lastElement];
getSumOfElements(intArray, firstElement + 1, lastElement - 1, sum);
}
}
int main()
{
int sum = 0, lastElement, firstElement = 0;
int exampleArray1[] = { 1, 5, 6, 12, 7 }, exampleArray2[] = { 3, -5, -16, 4, 10, 1, 7 };
lastElement = sizeof(exampleArray1) / sizeof(exampleArray1[0]);
sum = getSumOfElements(exampleArray1, firstElement, lastElement, sum);
cout << "The sum of all elements in Array1 are " << sum << endl;
lastElement = sizeof(exampleArray2) / sizeof(exampleArray2[0]);
sum = getSumOfElements(exampleArray2, firstElement, lastElement, sum);
cout << "The sum of all elements in Array2 are " << sum << endl;
system("pause");
}
您正在数组外建立索引。
int lastElement = sizeof(exampleArray1) / sizeof(exampleArray1[0]);
sum = getSumOfElements(exampleArray1, firstElement, lastElement, sum);
然后你做
sum += intArray[firstElement] + intArray[lastElement];
在第一次调用期间,lastElement将在数组外部进行索引。你应该做
sum = getSumOfElements(exampleArray1, firstElement, lastElement - 1, sum);
这就是为什么您会得到像-858993459这样的“怪异”整数值的原因。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句