V tej vadnici boste spoznali rekurzivno funkcijo Java, njene prednosti in slabosti.
V Javi je metoda, ki se sama pokliče, znana kot rekurzivna metoda. Ta postopek je znan kot rekurzija.
Primer fizičnega sveta bi bil postavitev dveh vzporednih ogledal drug proti drugemu. Vsak predmet vmes bi se odseval rekurzivno.
Kako deluje rekurzija?

V zgornjem primeru smo recurse()
metodo poklicali znotraj main
metode. (običajen klic metode). In znotraj metode rekurza () znova prikličemo isto metodo ponavljanja. To je rekurzivni klic.
Da bi prekinili rekurzivni klic, moramo znotraj metode zagotoviti nekaj pogojev. V nasprotnem primeru bo metoda poklicana neskončno.
Zato uporabljamo stavek if … else (ali podoben pristop) za zaključek rekurzivnega klica znotraj metode.
Primer: Faktor s številom, ki uporablja rekurzijo
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); ) )
Izhod :
4 faktorji = 24
V zgornjem primeru imamo imenovano metodo factorial()
. Pokliče factorial()
se iz main()
metode. s spremenljivko število, ki je bila posredovana kot argument.
Tukaj, opazite izjavo,
return n * factorial(n-1);
factorial()
Metoda je sama kliče. Sprva je vrednost n notri 4 factorial()
. Med naslednjim rekurzivnim klicem se factorial()
metodi posreduje 3 . Ta postopek se nadaljuje, dokler n ni enako 0.
Ko je n enako 0, if
stavek vrne false, torej se vrne 1. Na koncu se zbrani rezultat posreduje main()
metodi.
Delovanje Faktorialnega programa
Spodnja slika vam bo dala boljšo predstavo o izvedbi faktorskega programa z uporabo rekurzije.

Prednosti in slabosti rekurzije
Ko je izveden rekurzivni klic, se na skladišču dodelijo nova mesta za shranjevanje spremenljivk. Ker se vsak rekurzivni klic vrne, se stare spremenljivke in parametri odstranijo iz sklada. Zato rekurzija na splošno porabi več pomnilnika in je na splošno počasna.
Po drugi strani pa je rekurzivna rešitev veliko preprostejša in zahteva manj časa za pisanje, odpravljanje napak in vzdrževanje.
Priporočeno branje: Katere so prednosti in slabosti rekurzije?