возвращение 2 значений из массива с использованием рекурсии c ++ - PullRequest
0 голосов
/ 16 ноября 2018

Это код для поиска числа в массиве и возврата его индекса. Но что, если у меня одинаковые 2 числа и я хочу вернуть оба их индекса?

int find_pos (int a[], int index, int n)
{


  if ( a[index] == n) 
  {
    return index;
  }

  else
  {
    return find_pos (a, index + 1, n);
  }
}
int main()

{
  int a[] = {3, 1, 5, 6, 0, 6, 8, 4};

  cout << find_pos (a, 0, 6);

}

1 Ответ

0 голосов
/ 16 ноября 2018

Вы можете использовать vector<int> для хранения индексов найденных значений.То есть вместо возврата, когда вы найдете соответствующее значение, просто сохраните индекс в своем векторе и продолжайте поиск.Это означает, что ваш базовый случай рекурсии должен измениться.Вам придется искать весь путь до конца массива.Поскольку вы используете массив в стиле C, вам также придется передавать длину массива, чтобы рекурсивные вызовы функций могли знать, когда остановиться.

...