问答题 如何用递归实现数组求和
【正确答案】
【答案解析】给定一个含有n个元素的整型数组a,求a中所有元素的和。
如果不要求递归求解,最简单的方法,也是最容易想到的方法只需要进行一次循环,然后求和即可。程序示例如下:
#include<stdio.h>
int main()
{
int a[]={3,6,8,2,1};
int i;
int len=sizeof(a)/sizeof(a[0]);
int sum=0;
for(i=0;i<len;i++)
{
sum+=a[i];
}
printf("%d/n",sum);
return 0;
}
程序输出结果:
20
问题的难点在于如何使用递归上。如果使用递归,则需要考虑如何进行递归执行的开始以及终止条件,首先如果数组元素个数为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};
int length=sizeof(a)/sizeof(a[0]);
printf("%d/n",GetSum(a,length));
return 0;
}
程序输出结果:
20