Git посилання: https://github.com/prakashbtech87/PrakashJavaRepository/blob/main/src/main/java/com/prakash/a2zdsa/recursion/ReverseArray.java
package com.prakash.a2zdsa.recursion;
/**
* Клас ReverseArray демонструє перевертання масиву за допомогою рекурсії.
* Автор: Prakash Karuppusamy
*/
public class ReverseArray {
/**
* Рекурсивний метод для перевертання масиву.
*
* @param i Поточний індекс для обміну елементами з початку.
* @param arr Масив, який потрібно перевернути.
* @param n Довжина масиву.
*/
static void reverse(int i, int[] arr, int n) {
// Базова умова: зупинка рекурсії, коли досягнуто середину масиву.
if (i >= n / 2) return;
// Обмін елементами на позиціях i та (n - i - 1).
swap(arr, i, n - i - 1);
// Рекурсивний виклик для перевертання наступної пари елементів.
reverse(i + 1, arr, n);
}
/**
* Допоміжний метод для обміну двома елементами в масиві.
*
* @param arr Масив, що містить елементи.
* @param i Індекс першого елемента.
* @param j Індекс другого елемента.
*/
static void swap(int[] arr, int i, int j) {
int temp = arr[i]; // Зберігаємо значення за індексом i в тимчасовій змінній.
arr[i] = arr[j]; // Присвоюємо значення з індексу j індексу i.
arr[j] = temp; // Присвоюємо тимчасове значення індексу j.
}
public static void main(String[] args) {
int arr[] = {1, 2, 3, 4, 5}; // Вхідний масив.
System.out.println("Оригінальний масив:");
printArray(arr);
// Викликаємо метод reverse для перевертання масиву.
reverse(0, arr, arr.length);
System.out.println("Перевернутий масив:");
printArray(arr);
}
/**
* Утилітний метод для виведення масиву.
*
* @param arr Масив, який потрібно вивести.
*/
static void printArray(int[] arr) {
for (int num : arr) {
System.out.print(num + " ");
}
System.out.println();
}
}
Перекладено з: [DSA — Recursion using Java](https://prakashbtech87.medium.com/dsa-recursion-using-java-101b41df8822)