我想在C void cumsum(int *array, int length)
中编写一个接收数组作为输入的函数,然后使用RECURSION将该数组的元素更改为累积和。例如,如果我有array = {1,2,3}
,则输出应为array={1,3,6}
。
那么,我如何使用递归来做到这一点。
答案 0 :(得分:4)
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;
}
答案 1 :(得分:1)
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];
}
}