JavaRush /Blog Java /Random-PL /Krótko mówiąc, rekurencja
vinsler
Poziom 35

Krótko mówiąc, rekurencja

Opublikowano w grupie Random-PL
Czym jest rekurencja w Javie, jakieś kompletne, niezrozumiałe bzdury, przyjrzyjmy się temu.
Rekurencja w skrócie - 1
Przykład:
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);
            }
        }
Możesz skopiować ten kod i przetestować go samodzielnie. Opis tego, co dzieje się wewnątrz ze zmiennymi: początkowo 15, 9 dzielone 15 / 9 = 1, reszta 6 , jeśli jest reszta, to uruchamiana jest nowa funkcja, ale wartości będą już 9, 6(z reszty) dzielone 9 / 6 = 1, reszta 3 , jeśli jest reszta , następnie zostanie uruchomiona nowa funkcja, ale wartości będą już 6, 3(z reszty) podzielone 6 / 3 = 2, reszta 0 , jeśli nie ma reszty, z funkcji zostanie wyprowadzona druga liczba 3 . Teraz spójrzmy na wszystko bardziej szczegółowo, dla mnie babcia.
  1. Rekurencja w Javie uruchamia funkcję z poziomu samej funkcji.
  2. Po uruchomieniu funkcji wszystko, co zostało w niej wykonane, zostaje usunięte i uruchomiona zostaje nowa funkcja z nowymi parametrami.
Innymi słowy, jeśli widzisz słowo uruchomienie tej samej funkcji [rec], to weź tę funkcję na sam początek jej opisu, przenieś tam podane parametry i zobacz, co będzie dalej. To tyle wyjaśnień. Uruchamiamy funkcję, ustawiamy w środku określone parametry, przy których albo uruchamiana jest rekurencja, albo zwracany jest jakiś wynik. Oto cała tajemnica. PS: Napisałem tak z głowy, od razu i pomogłem znajomemu z jednego powodu, więc wszelka krytyka i ulepszenia mile widziane. )))
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION