Решено - реверсивный массив с использованием рекурсии (специфическая проблема вывода)
Я завершил свою рекурсивную программу обратного массива, однако она не выводит последнее число из исходного массива в обратном массиве. Вот пример вывода:
Исходный Массив: 18 18 10 8 5 1 13 13 18 19
Реверсивный Массив: 18 13 13 1 5 8 10 18 18
Он не выводит "19" (которое должно быть помещено первым в обратном массиве). Может ли кто-нибудь подсказать мне, где находятся ошибки в моем коде? Любая помощь будет очень признательна. Спасибо. Вот часть моего кода:
void print_reverse_array(int a[], int k) { if (k == 0) return; else cout << setw(3) << a[k - 1]; print_reverse_array(a, k - 1); } int main () { int arr[SIZE]; cout << "Original Array:"; initialize(arr); print_array(arr); cout << "Reversed Array:"; print_reverse_array(arr, SIZE - 1); return 0; }
Что я уже пробовал:
Я попытался увеличить/уменьшить k в операторе if-else, однако это тоже не работает (он не позволяет мне компилироваться).
*Это рандомизированный массив (диапазон равен [1-20] )
(Я понял, что никогда не инициализировал k = SIZE в своей основной функции) - решено
jeron1
Пройдите через первый вызов функции print_reverse_array (), обратите внимание на значение k, затем посмотрите на строку cout и вычисленный индекс массива.
Member 13426989
Спасибо! Я понял, что никогда не устанавливал k = SIZE;
и в моем основном (после инициализации k=SIZE) это была моя ошибка: print_reverse_array(arr, SIZE - 1), когда это должно быть (arr, k)
jeron1
k будет тем, что передается в качестве второго аргумента вызова функции, вы отправляете SIZE-1, так что это значение, которое k стало при вызове функции. Просто передайте размер в качестве второго аргумента.