如何使用递归查找数组的总和?

时间:2017-06-05 06:01:28

标签: c++

需要一些帮助来搞清楚这个赋值,我基本上必须使用递归找到一个数组的总和,我不能使用任何循环而我的函数只能有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--);
}

3 个答案:

答案 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;

}