求N个数之和的函数(运行失败),不知为什么?

来源:百度知道 编辑:UC知道 时间:2024/06/17 01:44:53
#include<iostream.h>
#define N 5
float sum(int);
float a[N];
void main()
{
int i;
float a[N];
cout<<"请输入N个浮点数"<<endl;
for(i=0;i<N;i++)
cin>>a[i];
cout<<"这N个数的和为"<<sum(N)<<endl;

}
float sum(int n)
{
if(n=1) return a[0];
else
return sum(n-1)+a(n-1);
}
感觉没错误,为什么运行失败了呢?

第一:应该是 include<iostream>
第二:应该有语句:using namespace std;因为 cout endl cin 这些对象都在名空间 std 中,
第三:if (n=1)应该改成 if (n==1);= 是赋值符号, == 是判断符号
第四:最后一句 return sum(n-1)+a(n-1);应该是return sum(n-1)+a[n-1];
第五(最重要一点):上面第一了两个 float a[N];由于作用域的问题,输入的是在main函数中的 a[N],而sum 函数中用的是全局作用域的 a[N];
修改方法 把main函数定义的 float a[N] 去掉
(注:以上修改后的程序在visual studio 2008 运行通过)

sum(n-1)+a(n-1);--》a[n-1]吧

return sum(n-1)+a(n-1);改为return sum(n-1)+a[n-1];

return sum(n-1)+a(n-1)改为return sum(n-1)+a[n-1]

float sum(int n)里边没有把数组传进去

你的a[N]既然已经声明是全局的了为什么还要在main函数中重复定义呢?
还有iostream不需要添加".h",在我这vs2005上使用iostream.h是要报错的。
你是为了测试递归?怎么一个简单的程序写的这么复杂?

C#求n个数之和的程序代码 编写一个递归函数,求N个数的和,在主函数中调用,要求从键盘输入N的值和N个数 求n个数的最大公约数 (C++)设计一个参数数目可变的函数,输出n个实参之和 求Fibonacci数列前20个数该数列的生成:F1=1,F2=1,Fn=Fn-1+Fn-2 (n>=3)即第3个数开始每个数等于前2个数之和 求用1,2,3,4,5五个数字组成的n位数个数,但要求4出现的次数与5出现的次数之和为奇数。 2X2方阵的4个数之和是28。求这4个数的平方和。 用C语言编程求:n以内素数的个数(n<10^8) 设第一个数是第2个数的2倍,第一个数与第2个数的2倍之和为20,求这2个数? 定义函数A5,输入n个整数,求这n个整数之中的偶数个数和偶数平均数并输出。