通过划分数组递归地计算总和

时间:2016-09-15 06:11:54

标签: c++ arrays recursion

我试图创建一个递归计算数组中元素总和的函数。我想尝试每次迭代时将数组减半的方法。

这是我到目前为止所拥有的。

int sumRec(int *A, int n, int start, int end)
{
     if (start == end){
         return A[end];
     }
     mid = n/2;
     return sumRec(A, n, start, mid) + sumRec(A, n, start, mid + 1);
}

我是否在正确的轨道上? 感谢。

1 个答案:

答案 0 :(得分:1)

你不需要将n传递给函数。这不是必需的。 目前,您的程序将遇到无限递归。

您可以使用

mid = (start+end)/2;

您的代码中还有更多错误。

这是一个可以完成工作的类似代码

int sumRec(int *A, int start, int end)
{
     if (start <= end)
     {
        int mid = (start+end)/2;
        return A[mid] + sumRec(A,start, mid-1) + sumRec(A,mid+1,end);
     }
     return 0;
}