需要一些帮助来搞清楚这个赋值,我基本上必须使用递归找到一个数组的总和,我不能使用任何循环而我的函数只能有2个参数,它们是数组和数组&#39 ;尺寸。这也是我第一次发帖,原谅我任何格式错误。使用C ++。
#include "stdafx.h"
#include <iostream>
using namespace std;
int arrayFact(int[], int);
int main()
{
const int SIZE = 4;
int fArray[SIZE] = { 4, 5, 10, 12, };
cout << "test: " << arrayFact(fArray, SIZE);
return 0;
}
int arrayFact(int array[], int s)
{
if (s == 0)
return 1;
else
return array[s] + arrayFact(array, s--);
}
答案 0 :(得分:1)
第一次调用arrayFact时,s为4,并且将超出实际数组的范围。
更改您的功能如下:
int arrayFact(int array[], int s)
{
if (s == -1)
return 0;
else
return array[s-1] + arrayFact(array, s-1);
}
答案 1 :(得分:0)
使用此:
int arrayFact(int array[], int s)
{
static int start = 0;
if(start >= s)
return 0;
start++;
return (array[start-1] + arrayFact(array,s));
}
并从主函数调用:
cout << "test: " << arrayFact(fArray,SIZE);
在线测试here。
答案 2 :(得分:-1)
你可以试试这个。
在“using namespace std;”之后,将n和SIZE声明为全局变量并键入以下内容。
#include<iostream>
using namespace std;
const int SIZE = 4;
int n;
int arrayFact(int fArray[], int n);
int main(){
int fArray[SIZE] = {4, 5, 10, 12};
cout << "test: " << arrayFact(fArray, n);
return 0;
}
int arrayFact(int fArray[], int n){
int sum = 0;
for(int n = 0; n < SIZE; n++)
sum += fArray[n];
return sum;
}