Вывести массив целочисленных значений на экран в обратном порядке, используя рекурсию - PullRequest
0 голосов
/ 28 апреля 2020
void IntegerReversed(int* a, int n)
{
    if (n < 1) {
        return;
    }
    else {
        cout << a[n - 1] << endl;
        Integer(a, n - 1);
    }
}

int main()
{
    int* a;
    int n;
    cout << "Input n: ";
    cin >> n;
    a = new int[n];
    for (int i = 0;i < n;i++) {
        cin >> *(a + i);
    }
    cout << "Integer values reversed in array: " << endl;
    IntegerReversed(a, n);
}

Привет, мой код для вывода массива целочисленных значений на экран в обратном порядке с использованием рекурсии.

, но он печатает только первый правильный элемент

Ввод: a [4 ] = {1,2,3,4}

Но вывод: 4, 1, 2, 3

Я хочу напечатать: 4, 3, 2, 1 Можете ли вы помочь мне исправить этот код

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

Хотя я понимаю, что это, вероятно, упражнение в самой рекурсии, оно определенно не нужно для этой проблемы, поскольку векторы (и большинство контейнеров стандартной библиотеки) имеют встроенные возможности для итерации в обратном порядке.

#include <iostream>
#include <vector>

int main() {
  int numElements;
  std::cout << "Number of Elements: ";
  std::cin >> numElements;

  std::vector<int> arr(numElements);

  for (int i = 0; i < numElements; ++i) {
    std::cin >> arr[i];
  }

  for (auto rit = arr.rbegin(); rit != arr.rend(); ++rit) {
    std::cout << *rit << ' ';
  }
  std::cout << '\n';
}
0 голосов
/ 28 апреля 2020

Я проверил вашу программу ..

void IntegerReversed(int* a, int n)
{
    if (n < 1) {
        return;
    }
    else {
        cout << a[n - 1] << endl;
        IntegerReversed(a, n - 1);
    }
}

, и это была просто орфографическая ошибка .. в рекурсивном вызове ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...