[数组]递归方式求和

递归方法求和

首先,如果不需要用递归方法,我们可以用遍历的方式来实现数组元素求和。

#include <stdio.h>
 
int main()
{
int a[] = {3,6,8,2,1};
int i;
int sum = 0;
int len = sizeof(a) / sizeof(a[0]);
for(i = 0; i < len; i++)
{
sum += a[i];
}
printf("%d\n",sum);
return 0;
}
 


如题目要求,用递归方式实现求和。我们需要考虑递归的开始以及终止条件,如果数组的元素个数为0,那么和为0,如果数组元素个数为n,那么先求出前n-1个元素的和,再加上a[n-1]即可。

#include <stdio.h>
 
int GetSum(int *a,int n)
{
return n == 0 ? 0 :GetSum(a,n-1) + a[n-1];
}
int main()
{
int a[] = {3,6,8,2,1};0;
int len = sizeof(a) / sizeof(a[0]);
printf("%d\n",GetSum(a,len));
return 0;
}


 



版权声明:本文为wzhCAlex原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。