编辑代码

#include <stdio.h>

//递归
int segment(int length,int width){
    if(length%width==0) return width;
    
    return segment(width,length%width);
}

//递推
int segment1(int length,int width){
    int w=0;
    while(length%width!=0){
        w=length%width;
        length=width;
        width=w;
    }
    return width;
}

//递归实现数组累加
int sumArray(int arr[],int len){

    if(len==1){
        return arr[0];
    }
 
    return sumArray(arr,len-1)+arr[len-1];
}

//递推
int sumArray2(int arr[],int length){
    if(length==0) return 0;
   
    int sum=0;
    for(int i=0;i<length;i++){
        sum=arr[i]+sum;
    }
    return sum;
}

int main () {
    printf("递归分土地:%d\n",segment(1680,640));
    printf("递推分土地:%d\n",segment1(1680,640));
    int s[]={2,4,6};
    printf("%d \n",sumArray(s,3));
    printf("%d \n",sumArray2(s,3));
    return 0;
}