Ebben az oktatóanyagban megismerheti a Java rekurzív funkcióját, annak előnyeit és hátrányait.
A Java-ban az önmagát hívó módszer rekurzív módszer. Ezt a folyamatot rekurziónak nevezik.
A fizikai világ példája az lenne, ha két párhuzamos tükröt egymással szemben helyeznének el. A köztük lévő bármely objektum rekurzív módon tükröződik.
Hogyan működik a rekurzió?

A fenti példában a recurse()
metódust belülről hívtuk meg main
. (normál módszeres hívás). És a recurse () módszer belsejében ismét ugyanazt a recurse metódust hívjuk meg. Ez egy rekurzív hívás.
A rekurzív hívás leállításához meg kell adnunk néhány feltételt a módszer belsejében. Ellenkező esetben a módszert végtelenül hívják.
Ezért az if… else utasítással (vagy hasonló megközelítéssel) befejezzük a rekurzív hívást a módszeren belül.
Példa: Rekurziót használó szám tényezője
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); ) )
Kimenet :
4 faktoriális = 24
A fenti példában van egy megnevezett módszerünk factorial()
. A metódusból factorial()
hívjuk meg main()
. érvként átadott számváltozóval.
Itt vegye észre a nyilatkozatot,
return n * factorial(n-1);
A factorial()
módszer önmagát hívja. Kezdetben n értéke 4 belül van factorial()
. A következő rekurzív hívás során 3 átkerül a factorial()
módszerhez. Ez a folyamat addig folytatódik, amíg n nem egyenlő 0-val.
Ha n egyenlő 0-val, akkor az if
utasítás hamis eredményt ad, így az 1 visszatér. Végül a felhalmozott eredményt átadják a main()
módszernek.
A Factorial program működése
Az alábbi kép jobb képet ad arról, hogy a faktoriális program hogyan kerül végrehajtásra rekurzióval.

A rekurzió előnyei és hátrányai
Rekurzív hívás kezdeményezésekor a változók számára új tárhelyeket osztanak ki a veremben. Amint minden rekurzív hívás visszatér, a régi változókat és paramétereket eltávolítjuk a veremből. Ezért a rekurzió általában több memóriát igényel és általában lassú.
Másrészt a rekurzív megoldás sokkal egyszerűbb és kevesebb időt vesz igénybe az írás, a hibakeresés és a karbantartás.
Ajánlott olvasmány: Melyek a rekurzió előnyei és hátrányai?