主题:请教高手
cck20040410
[专家分:0] 发布于 2007-05-08 22:43:00
// 递归函数sum(int a[],int n)的返回值是数组a[]的前n个元素之和。
int sum(int a[],int n)
{if(n>0)return (1);
else 0;
}
//(1)答案是a[n-1]+sum(a[],n-1)或 a[0]+sum(a+1,n-1);
// sum(a+1,n-1)这个是怎么回事啊? 我觉得应该是sum(a[],n-1)
回复列表 (共3个回复)
沙发
飘雨少年 [专家分:400] 发布于 2007-05-08 22:51:00
sum(a+1,n-1)返回a[1]至a[n-1]的和,a+1指向数组a[n]的下一地址,返回它前面的n-1个单元内容之和。
关于这个递归函数,我还要再考虑一下。
应该这样写吧:
int sum(int a[],int n)
{
if(n>0)return a[n-1]+sum(a,n-1);
else return a[0];
}
板凳
cck20040410 [专家分:0] 发布于 2007-05-09 08:44:00
我开始也是这样想的.但答案说是return 0
3 楼
飘雨少年 [专家分:400] 发布于 2007-05-10 21:44:00
[quote]我开始也是这样想的.但答案说是return 0
[/quote]
是我考虑错了,应该是return 0的。给你个完整的程序。
#include <iostream.h>
int sum(int a[],int n)
{
if(n>0) return a[n-1]+sum(a,n-1);
else return 0;
}
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
cout<<"Sum is :"<<a[9]+sum(a,9)<<endl;
cin.get();
return 0;
}
我来回复