C中使用递归的数组的累积和

C中使用递归的数组的累积和,c,arrays,recursion,C,Arrays,Recursion,我想在Cvoid cumsum(int*array,int length)中编写一个函数,它接收一个数组作为输入,然后使用递归将该数组的元素更改为累积和。例如,如果我有array={1,2,3},那么输出应该是array={1,3,6} 那么,我如何使用递归实现这一点 void总和(int*数组,int索引){ void cumsum(int *array, int index) { if(index <= 0) return; cumsum(array, index -1

我想在C
void cumsum(int*array,int length)
中编写一个函数,它接收一个数组作为输入,然后使用递归将该数组的元素更改为累积和。例如,如果我有
array={1,2,3}
,那么输出应该是
array={1,3,6}

那么,我如何使用递归实现这一点

void总和(int*数组,int索引){
void cumsum(int *array, int index) {
    if(index <= 0) return;
    cumsum(array, index -1);
    array[index] += array[index - 1];
}

int main(void) {
    int array[] = {1,2,3};
    cumsum(array, 2}; //you had to call with the index of the last element (size-1)
    printf("%d %d %d\n", array[0], array[1], array[2]);
    return 0;
}
如果(指数单向:

void cumsum(int* array, int length,int pos){
if(pos+1<length) array=cumsum(array,length,pos+1);
 for(int i=pos+1;i<length;i++){
  array[i]+=array[pos];
 }
}    
void总和(int*数组、int长度、int位置){

如果(pos+1到目前为止你有什么?这真的不是一个递归的问题……除非这是一个考虑不周的家庭作业。这可以通过一个for循环和几行代码来完成……从字面上说,我知道如何使用for循环,但不知道如何使用递归。你想告诉我们一个具体的原因吗递归?我之所以这么问是因为不是所有的问题都需要递归。在我看来,递归只能作为最后的手段,当它的好处超过迭代解决方案时(或者如果迭代解决方案不存在的话)。如果你只是因为想学习递归而提问,那没关系。但是如果你想用这样的问题来教授递归,可能会留下更多的问题,而不是答案。你的意思是计数,而不是大小,对吗?更改为
If(--index)