V tomto tutoriálu se dozvíte o rekurzivní funkci Java, jejích výhodách a nevýhodách.
V Javě je metoda, která si říká sama, známá jako rekurzivní metoda. A tento proces je známý jako rekurze.
Příkladem fyzického světa by bylo umístění dvou paralelních zrcadel proti sobě. Jakýkoli objekt mezi nimi by se odrazil rekurzivně.
Jak funguje rekurze?

Ve výše uvedeném příkladu jsme recurse()
metodu nazvali zevnitř main
metody. (volání normální metody). A uvnitř metody recurse () opět voláme stejnou metodu recurse. Toto je rekurzivní volání.
Abychom zastavili rekurzivní volání, musíme v metodě poskytnout některé podmínky. V opačném případě bude metoda volána nekonečně.
Proto používáme příkaz if… else (nebo podobný přístup) k ukončení rekurzivního volání uvnitř metody.
Příklad: Faktoriál čísla pomocí rekurze
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
Ve výše uvedeném příkladu máme metodu pojmenovanou factorial()
. Volá factorial()
se z main()
metody. s proměnnou number předanou jako argument.
Zde si všimněte prohlášení,
return n * factorial(n-1);
factorial()
Metoda volá sám. Zpočátku je hodnota n uvnitř 4 factorial()
. Během dalšího rekurzivního volání se factorial()
metodě předá 3 . Tento proces pokračuje, dokud n není rovno 0.
Když n je rovno 0, if
příkaz vrátí hodnotu false, proto se vrátí 1. Nakonec se akumulovaný výsledek předá main()
metodě.
Práce faktoriálního programu
Obrázek níže vám poskytne lepší představu o tom, jak se faktoriální program provádí pomocí rekurze.

Výhody a nevýhody rekurze
Když je provedeno rekurzivní volání, jsou v zásobníku přidělena nová úložiště pro proměnné. Protože se každé rekurzivní volání vrací, staré proměnné a parametry jsou ze zásobníku odebrány. Rekurze proto obvykle využívá více paměti a je obecně pomalá.
Na druhou stranu je rekurzivní řešení mnohem jednodušší a jeho psaní, ladění a údržba zabere méně času.
Doporučené čtení: Jaké jsou výhody a nevýhody rekurze?