分治求和算法

Divide and conquer sum algorithm

我正在寻找一些 D&C 算法并创建了这个算法

int sumArray(int anArray[], int size)
{
    //base case
    if (size == 0)
    {
        return 0;
    }
    else if (size == 1)
    {
        return anArray[0];
    }

    //divide and conquer
    int mid = size / 2;
    int rsize = size - mid;
    int lsum = sumArray(anArray, mid);
    int rsum = sumArray(anArray + mid, rsize);
    return lsum + rsum;
} 

但每次 运行 没有基本情况的代码都是 returns 段错误。 我想弄清楚为什么这个基本案例如此重要,以至于即使 运行 n>1 它仍然返回那个错误,有人会在这里伸出援手吗?

因为函数sumArray递归调用自身,

    int lsum = sumArray(anArray, mid);
    int rsum = sumArray(anArray + mid, rsize);

无论数组大小如何,都需要基本情况​​。否则Fnction永远无法退出调用自身的循环! 请记住,基于 midrsize 中的一个可能是奇数,甚至是 size == 0size == 1 的基本情况:

    if (size == 0)
    {
        return 0;
    }
    else if (size == 1)
    {
        return anArray[0];
    }

需要