Java rekurzia: Rekurzívne metódy (s príkladmi)

V tomto výučbe sa dozviete o rekurzívnej funkcii Java, jej výhodách a nevýhodách.

V Jave je metóda, ktorá si hovorí, známa ako rekurzívna metóda. A tento proces je známy ako rekurzia.

Fyzickým svetovým príkladom by bolo umiestnenie dvoch paralelných zrkadiel oproti sebe. Akýkoľvek objekt medzi nimi by sa odrážal rekurzívne.

Ako funguje rekurzia?

Fungovanie Java rekurzie

Vo vyššie uvedenom príklade sme recurse()metódu nazvali zvnútra mainmetódy. (volanie bežnou metódou). A vo vnútri metódy recurse () opäť voláme tú istú metódu recurse (). Toto je rekurzívne volanie.

Aby sme zastavili rekurzívne volanie, musíme vnútri metódy poskytnúť nejaké podmienky. V opačnom prípade bude metóda volaná nekonečne.

Preto používame príkaz if… else (alebo podobný prístup) na ukončenie rekurzívneho hovoru vo vnútri metódy.

Príklad: Faktoriál čísla pomocou rekurzie

 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); ) )

Výstup :

 4 faktoriál = 24

Vo vyššie uvedenom príklade máme pomenovanú metódu factorial(). Z metódy factorial()sa volá main(). s premennou number odovzdanou ako argument.

Tu si všimnite vyhlásenie,

 return n * factorial(n-1);

factorial()Metóda volá sám. Na začiatku je hodnota n vo vnútri 4 factorial(). Počas nasledujúceho rekurzívneho volania sa factorial()metóde odovzdajú 3 . Tento proces pokračuje, kým n sa nerovná 0.

Keď je n rovné 0, ifpríkaz vráti false, preto sa vráti 1. Nakoniec sa akumulovaný výsledok odovzdá main()metóde.

Fungovanie faktoriálneho programu

Obrázok nižšie vám poskytne lepšiu predstavu o tom, ako sa faktoriálny program vykonáva pomocou rekurzie.

Faktoriálny program využívajúci rekurziu

Výhody a nevýhody rekurzie

Keď sa uskutoční rekurzívne volanie, v zásobníku sa alokujú nové umiestnenia úložiska pre premenné. Pretože sa každé rekurzívne volanie vracia, staré premenné a parametre sa odstránia zo zásobníka. Rekurzia preto zvyčajne využíva viac pamäte a je zvyčajne pomalá.

Na druhej strane je rekurzívne riešenie oveľa jednoduchšie a jeho zápis, ladenie a údržba trvá menej času.

Odporúčame prečítať: Aké sú výhody a nevýhody rekurzie?

Zaujímavé články...