随机生成由 n 个正整数构成的数组,并用递归算法求该数组的和及最大值

随机生成由 n 个正整数构成的数组,并用递归算法求该数组的和及最大值。

简单的递归作用就是替代循环而已。
递归函数中求当前的和及最大值,然后调用递归求下一个数组元素

#include<stdio.h>
#include <time.h>
void fun(int *a,int n,int pos,int *sum,int *max)
{
    *sum += a[pos];
    if(a[pos] > *max)
        *max = a[pos];
    pos++;
    if(pos == n-1)
        return;
    fun(a,n,pos,sum,max);
}

int main()
{
    int a[100];
    int n,sum,max;
    scanf("%d",&n);
    srand((unsigned)time(NULL));//选取种子文件
    for(int i=0;i<n;i++)
    {
        a[i] = rand();
    }
    sum = max = a[0];
    fun(a,n,1,&sum,&max);
    for(int i=0;i<n;i++)
        printf("%d ",a[i]);
    printf("\nsum=%d,max=%d\n",sum,max);
    return 0;
}
 

int findmax(int *a, int length, int index) {
if (length <= index) {
printf("data has errror!");
}
if (lenght == index + 1) {
return a[index];
}
int max = findmax(a, lenght, index+1);

return MAX(max, a[index]);
}