问题:如何用递归实现数组求和?

发布时间:2016-12-8 6:13:44 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"问题:如何用递归实现数组求和?",主要涉及到问题:如何用递归实现数组求和?方面的内容,对于问题:如何用递归实现数组求和?感兴趣的同学可以参考一下。

    给定一个含有n个元素的整型数组a,求a中的所有元素的和。 要是不要 求用递归求解,那么此题便非常容易了,下面是一种容易想到的方法: #include <stdio.h> int main(void) { int a[] = {3, 7, 8, 2, 10}; int len = sizeof(a)/sizeof(a[0]); int i, sum = 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(void) { int a[] = {3, 7, 8, 2, 10}; int len = sizeof(a)/sizeof(a[0]); printf("%d\n",GetSum(a, len)); return 0; }

上一篇:ExtJS4.2学习(10)——基础知识完结小插曲(与技术无关)
下一篇:mongodb启动出现 无法定位程序输入点 InterlockedCompareExchange64

相关文章

相关评论