随机生成由 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]);
}