【发布时间】:2021-02-25 18:45:21
【问题描述】:
我正在学习递归并尝试计算数组的正元素的总和,但我不知道该怎么做。谁能帮帮我?
#include <iostream>
using namespace std;
int sum (int arr[],int n)
{
if(n==-1)
return 0;
/*else if(arr[n]<0)
return arr[n]+sum(arr,n+1) ;*/
else
return arr[n-1]+sum(arr , n-1);
}
int main()
{
int n , arr[n] ;
cout<<"give the value of n : " ; cin>>n;
cout<<"give the values of the array ";
for(int i=0;i<n;i++)
cin>>arr[i];
cout<<"the value of positive elements is : " << sum(arr,n);
return 0;
}
【问题讨论】:
-
请澄清您的问题到底是什么,阅读How to Ask 了解更多信息。作为新用户,也请拨打tour。顺便说一句:如果您对值进行硬编码而不是手动输入它们会很有帮助,它可以让测试更容易,并且错误源更少。
-
main的第一行,n的值是多少? arr 有多大?
-
与其他错误一样,在
sum中,如果n为0,那么您进入else 子句并最终访问arr[-1],这不太可能是您想要的。 -
即使你使用编译器扩展来启用 C++ 中的可变长度数组,在你用任何东西初始化
n之前声明int arr[n];是行不通的。它需要在声明时为arr分配内存,而不是在您为n分配值后追溯。
标签: c++ arrays c++11 recursion sum