Вывод массива с помощью рекурсии

1057
09 мая 2017, 06:11

Необходимо вывести элементы массива в обратном порядке, при этом передать в функцию последний индекс массива. Что я делаю не так? Вот мой код :

#include <iostream>
using namespace std;
int Rev(int array[], int len) {
  if (len < 0) 
  {
return 0;
  } 
  else
  {
    array[len];
    Rev(array, len-1);
    cout << array[len] << "\n";
  }
}
int main() {
  int arr[6] = {42, 23, 16, 15, 8, 4};
  // вызов функции
Rev(arr, 5);
  return 0;
}

На выходе я получаю

42
23
16
15
8
4

т.е. в том же порядке, в котором элементы массива были заданы, а мне необходимо вывести их в обратном порядке.

Answer 1

А зачем рекурсия? Почему бы не так:

void Rev(int array[], int len)
{
    for(int i = len; i >= 0; --i)
        cout << array[i] << "\n";
}
int main()
{
    int arr[6] = {42, 23, 16, 15, 8, 4};
    Rev(arr, 5);
}

А вы, если хотите рекурсивно - поменяйте местами строки

Rev(array, len-1);
cout << array[len] << "\n";
Answer 2

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

как альтернативный вариант можно воспользоваться прекрасным свойством статических переменных которые сохраняют свои старые значения между вызовами (заодно и это подучите)

    void Rev(int array[], int len) 
    {
        static int i = 0;
        if (i < len)
        {
            cout << array[len-i-1] << ' '; ++i;
            Rev(array, len);
        }
    }
READ ALSO
CreateProcess() параметры командной строки

CreateProcess() параметры командной строки

Как сделать так, чтобы при создании нового процесса, с помощью CreateProcess(), в него передать char* argv[]

279
Не могу получит ключ с QMap

Не могу получит ключ с QMap

Сравниваю containce в QMap показывает ключ есть:

256
Мигание картинки на canvas

Мигание картинки на canvas

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

349