Java rekurzió: Rekurzív módszerek (példákkal)

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ó?

Java rekurzió működése

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 ifutasí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.

Faktoriális program a rekurzió használatá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?

érdekes cikkek...