编辑代码

#include <stdio.h>

// 递归
int sum1(int *a, int length) {
    int sum = 0;
    if(length == 1) {
        return *a;
    }
    return *a + sum1(a+1,length - 1);
}

// 递推
int sum2(int *a, int length) {
    int sum = 0;
    if(length == 1) {
        return *a;
    }
    for(int i = 0;i<length;i++)
        sum += *(a+i);
    return sum;
}

int main () {
    int a[] = {1,3,5,6,7,9};
    int b[] = {0,2,4,6,8,10};
    int c[] = {1,2,3,4,5,5,4,3,2,1};
    printf("数组累加和——递归方式:\n");
    printf("%d\n", sum1(a, 6));
    printf("%d\n", sum1(b, 6));
    printf("%d\n", sum1(c, 10));

    printf("数组累加和——递推方式:\n");
    printf("%d\n", sum2(a, 6));
    printf("%d\n", sum2(b, 6));
    printf("%d\n", sum2(c, 10));
    return 0;
}