Java rekurzija: rekurzivne metode (s primjerima)

U ovom vodiču naučit ćete o rekurzivnoj funkciji Java, njezinim prednostima i nedostacima.

U Javi je metoda koja sebe naziva poznata kao rekurzivna metoda. A, ovaj je proces poznat kao rekurzija.

Primjer fizičkog svijeta bio bi postavljanje dva paralelna ogledala okrenuta jedno prema drugome. Bilo koji objekt između njih reflektirao bi se rekurzivno.

Kako rekurzija djeluje?

Rad Java rekurzije

U gornjem primjeru pozvali smo recurse()metodu iznutra main. (poziv normalne metode). I, unutar rekurdske () metode, opet pozivamo istu rekurznu metodu. Ovo je rekurzivni poziv.

Da bismo zaustavili rekurzivni poziv, moramo osigurati neke uvjete unutar metode. U suprotnom, metoda će se pozivati ​​beskonačno.

Stoga koristimo naredbu if … else (ili sličan pristup) da bismo prekinuli rekurzivni poziv unutar metode.

Primjer: Faktorijal broja pomoću rekurzije

 class Factorial ( static int factorial( int n ) ( if (n != 0) // termination condition return n * factorial(n-1); // recursive call else return 1; ) public static void main(String() args) ( int number = 4, result; result = factorial(number); System.out.println(number + " factorial = " + result); ) )

Izlaz :

 4 faktorijel = 24

U gornjem primjeru imamo metodu imenovanu factorial(). Poziva factorial()se iz main()metode. s varijablom broja koja se prosljeđuje kao argument.

Ovdje, primijetite izjavu,

 return n * factorial(n-1);

factorial()Metoda koja sebe. U početku je vrijednost n unutar 4 factorial(). Tijekom sljedećeg rekurzivnog poziva, factorial()metoda se prosljeđuje 3 . Taj se postupak nastavlja sve dok n nije jednako 0.

Kada je n jednako 0, ifiskaz vraća false, stoga se vraća 1. Konačno, akumulirani rezultat prenosi se na main()metodu.

Rad Faktorijalnog programa

Slika u nastavku dat će vam bolju ideju o tome kako se faktorski program izvršava pomoću rekurzije.

Faktorijalni program koji koristi rekurziju

Prednosti i nedostaci rekurzije

Kada se izvrši rekurzivni poziv, nova mjesta za pohranu varijabli dodjeljuju se na stogu. Kako se svaki rekurzivni poziv vraća, stare varijable i parametri uklanjaju se iz stoga. Stoga rekurzija obično koristi više memorije i uglavnom je spora.

S druge strane, rekurzivno rješenje puno je jednostavnije i treba manje vremena za pisanje, uklanjanje pogrešaka i održavanje.

Preporučena literatura: Koje su prednosti i nedostaci rekurzije?

Zanimljivi članci...