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?
Práce s Java rekurzí
Ve výše uvedeném příkladu jsme recurse()metodu nazvali zevnitř mainmetody. (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, ifpří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.
Faktoriální program využívající rekurzi
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?







