wait 发表于 2016-1-17 23:00:11

如何用递归实现数组求和

    给定一个含有n个元素的整型数组a,求a中所有元素的和。    如果不要求递归求解,最简单的方法,也是最容易想到的方法只需要进行一次循环,然后求和即可。程序示例如下:#include <stdio.h>

int main()
{
             int a[]= {3,6,8,2,1};
             int i ;
             int len = sizeof(a)/sizeof(a);
             int sum = 0;
             for (i=0;i<len;i++)
             {
                           sum += a;
             }
             printf("%d\n",sum);
             return 0;
}
    程序输出结果:20    问题的难点在于如何使用递归上。如果使用递归,则需要考虑如何进行递归执行的开始以及终止条件,首先如果数组元素个数为0,那么和为0。同时,如果数组元素个数为n,那么先求出前n - 1个元素之和,再加上a即可。此时可以完成递归功能。程序代码如下:#include <stdio.h>

int GetSum(int*a, int n)
{
             return n ==0?0 : GetSum(a, n -1) + a;
}

int main()
{
             int a[] = {3,6,8,2,1};
             int length = sizeof(a)/sizeof(a);
             printf("%d\n",GetSum(a,length));
             return 0;
}
    程序输出结果:20
页: [1]
查看完整版本: 如何用递归实现数组求和