Функция рекурсии суммы массива не работает - PullRequest
0 голосов
/ 27 апреля 2020

Привет всем. Я озадачен, почему эта функция каждый раз возвращает 0. Я использую arr [0] в качестве индекса и определяю его размер массива в основной игре c.

int sum_array (int arr[]) {
    int result;
    arr[0] = arr[0]-1;
    if(arr[0]<=0){
        return 0;
    }
    result = ((sum_array(arr))+(arr[arr[0]]));
    return result;


} 

Если я использую if(arr[0]<=1) вместо if(arr[0]<=0), он возвращает 5. Я также не понять почему он возвращает 5.

array = {0,1,1,2,3,3,4}

1 Ответ

1 голос
/ 27 апреля 2020

следующий предложенный код:

  1. использует рекурсию
  2. выполняет желаемую функциональность

и теперь предлагаемый код:

int sum_array (int arr[]) 
{
    if(arr[0]<=0)
    {
        return 0;
    }
    else
    {
        int index = arr[0];
        arr[0]--;
        return arr[ index ] + sum_array( arr );
    }
}
...