c++ - 尝试递归地获取数组元素的总和

标签 c++ arrays segmentation-fault

我正在尝试在 C++ 上递归地查找数组元素的总和。

#include <bits/stdc++.h>

using namespace std;

int findSum(int arr[], int b, int e)
{
    if(b == e)
        return arr[b];
    else
    {
        int mid = (b + e) / 2;
        int x = findSum(arr, b, mid);
        int y = findSum(arr, mid, e);

        return x + y;
    }
}

int main()
{
    int arr[] = {1, 6, 3, 10, 11, 4, 5, 9, 15, 2};

    cout << findSum(arr, 0, 9);

    cout << endl; system("pause");
    return 0;
}

运行后得到(Exception has occurred. Segmentation fault)

最佳答案

尝试在 C++ 中递归地做任何事情是危险的。您的程序将面临堆栈溢出的风险,因为它有多个重复的函数填充堆栈,每次调用自身时都会变大。

因此,您可以通过以下方式迭代执行此操作:

 long int findsum(const int array[], int elementstart, int elementend) {
    long int summedArray = 0;
    for (int currentcell = elementstart; currentcell <= elementend; ++currentcell)
        summedArray += array[currentcell];
    return summedArray;
 }

关于c++ - 尝试递归地获取数组元素的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58779210/

相关文章:

c++ - 返回指向局部变量的指针总是未定义的行为

c++ - 为什么使用 gcc 在 Linux 和 Windows 上打包结构的大小会不同?

python - 在数组声明中生成值

java - 从数组元素(例如由句点分隔的索引 1 和索引 7)组成一个字符串

c - 带有结构体指针数组的 strcpy() 的段错误

c - C 中的二维数组和警告 : assignment makes integer from pointer without a cast

java - 这是什么文档格式?

c++ - 为什么 visual studio 会创建 .LIB 和 .DLL?

javascript - angular.foreach 函数抛出语法错误

c++ - 输出 endl 时出现 Clang 段错误