рассчитать сумму всех элементов в двойном массиве - PullRequest
2 голосов
/ 21 сентября 2011

Я немного запутался в использовании массива при выполнении рекурсии, может кто-нибудь исправить мою ошибку?

новое обновление, основанное на требуемом вопросе, некоторые строки нельзя редактировать

double sum_of_array(double x[],int size)
{


    static double sum; <---can be edit

    int index = 0; <--can be edit

    if(index<size){

        return sum + sum_of_array(x,size-1); <--can be edit

    }

    else {
       something ; <--can be edit
       return sum; <--can be edit

    }
}

int main(void){

    double x[] = {4.5,5.0,6.8};

    double y[] = {4.7,3.4,2.5,5.2};

    cout<<"Sum X = "<<sum_of_array(x,3)<<endl;

    cout<<"Sum Y = "<<sum_of_array(y,4)<<endl;

    return 0;
}

вывод:

Sum of the element in X[]=15.3

Sum of the element in Y[]= 15.8

Ответы [ 12 ]

0 голосов
/ 21 сентября 2011

Я бы начал с этого:

    return sum + sum_of_array(x,size-1); 

Разве вы не должны возвращаться:

    return x[size] + sum_of_array(x,size-1);      

Кроме того, вы должны найти способ установить sum в ноль между начальными вызовами функции, потому что в противном случае она будет накапливать сумму всех массивов, которые вы пытаетесь суммировать.

Дело в том, что вы никогда не инициализируете sum, поэтому там есть какой-то мусор.

Чья это была идея использовать рекурсию всех вещей, когда простой цикл for сработает? Это домашнее задание?

0 голосов
/ 21 сентября 2011

Ошибка: вы не инициализировали статическую переменную sum.

...