Необходимо вывести элементы массива в обратном порядке, при этом передать в функцию последний индекс массива. Что я делаю не так? Вот мой код :
#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
т.е. в том же порядке, в котором элементы массива были заданы, а мне необходимо вывести их в обратном порядке.
А зачем рекурсия? Почему бы не так:
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";
для того, чтобы поменять порядок вам следовало бы как уже ответили выводить после рекурсивного вызова -
как альтернативный вариант можно воспользоваться прекрасным свойством статических переменных которые сохраняют свои старые значения между вызовами (заодно и это подучите)
void Rev(int array[], int len)
{
static int i = 0;
if (i < len)
{
cout << array[len-i-1] << ' '; ++i;
Rev(array, len);
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как сделать так, чтобы при создании нового процесса, с помощью CreateProcess(), в него передать char* argv[]