JavaRush /Java блог /Random UA /У двох словах про рекурсію
vinsler
35 рівень

У двох словах про рекурсію

Стаття з групи Random UA
Що ж таке рекурсія в Java, якась хрень повна, незрозуміла, пройдемося.
У двох словах про рекурсію - 1
Приклад:
public class Recursion {
        public static void main(String[] args) {
            System.out.println("Изначальный REC ( 15 , 9 )" );
            System.out.println(rec(15,9)); // запускаем sout с возвращаемым функцией [rec] результатом
        }

        static int rec (int m, int n) { // передаем в функцию [rec] 2 числа
            if(m % n == 0) { // если первое число [m] делится на второе число [n] нацело, то возвращаем его
                System.out.println("Окончателное число " + n);
                return n;
            } else {
                // если не делится нацело, то перезапускаем функцию и заносим в него другие аргументы :
                // в качестве первого уже будет второе число [n],
                // а в качестве второго будет остаток от деления первого[m] на второе[n] 15 / 9 = 1 (+ остаток 6)
                System.out.println("Заносим в REC (" + n + " , " + m % n + ")");
                return rec(n,m % n);
            }
        }
Цей код ви можете скопіювати та протестувати у себе. Опис того, що відбувається всередині зі змінними: спочатку 15, 9 ділиться 15 / 9 = 1, залишок 6 якщо є залишок, значить запускається по новій функція, але значення вже будуть 9, 6(з залишку) ділиться 9 / 6 = 1, залишок 3 якщо є залишок, значить запускається по новій функція, але значення вже будуть 6, 3(з залишку) ділиться 6 / 3 = 2, залишок 0 якщо немає залишку, виводиться друге число з функції 3 А тепер розберемо все більш докладно, для моєї бабусі.
  1. Рекурсія в Java - це запуск функції із самої функції.
  2. При запуску функції все, що було зроблено всередині функції стирається і запускається нова функція, з новими параметрами.
Іншими словами, якщо ви бачите слово запуск цієї ж функції [rec], то берете цю функцію на самому початку її опису, переносіть туди параметри, що подаються, і дивіться, що відбувається далі. Ось і все пояснення. Ми запускаємо функцію, встановлюємо всередині певні параметри, при яких або запускається рекурсія або повертається якийсь результат. Ось і весь секрет. PS: Писав просто з голови, відразу ж і допомагав другові за одне, тому вся критика та доопрацювання лише вітаються. )))
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ