回 帖 发 新 帖 刷新版面

主题:请教高手

// 递归函数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个回复)

沙发

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];
 }

板凳

我开始也是这样想的.但答案说是return 0

3 楼

[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;
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册