I denna handledning lär du dig om Java rekursiv funktion, dess fördelar och nackdelar.
I Java är en metod som kallar sig själv känd som en rekursiv metod. Och den här processen kallas rekursion.
Ett fysiskt världsexempel skulle vara att placera två parallella speglar mot varandra. Varje objekt däremellan skulle återspeglas rekursivt.
Hur fungerar Rekursion?

I exemplet ovan har vi kallat recurse()
metoden inifrån main
metoden. (normalt metodsamtal). Och inom recurse () -metoden kallar vi igen samma recurse-metod. Det här är ett rekursivt samtal.
För att stoppa det rekursiva samtalet måste vi tillhandahålla några villkor i metoden. I annat fall kommer metoden att kallas oändligt.
Därför använder vi uttalandet if … else (eller liknande tillvägagångssätt) för att avsluta det rekursiva samtalet inuti metoden.
Exempel: Faktor av ett nummer som använder rekursion
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); ) )
Utgång :
4 faktor = 24
I exemplet ovan har vi en metod som heter factorial()
. Det factorial()
kallas från main()
metoden. med nummervariabeln skickad som ett argument.
Här, märk uttalandet,
return n * factorial(n-1);
Den factorial()
metod som kallar sig. Ursprungligen är värdet av n 4 inuti factorial()
. Under nästa rekursiva samtal skickas 3 till factorial()
metoden. Denna process fortsätter tills n är lika med 0.
När n är lika med 0, if
returnerar påståendet falsk, varför 1 returneras. Slutligen överförs det ackumulerade resultatet till main()
metoden.
Arbeta med faktorprogrammet
Bilden nedan ger dig en bättre uppfattning om hur faktorprogrammet genomförs med rekursion.

Fördelar och nackdelar med rekursion
När ett rekursivt samtal görs tilldelas nya lagringsplatser för variabler på stacken. När varje rekursivt samtal återvänder tas de gamla variablerna och parametrarna bort från stacken. Därför använder rekursion i allmänhet mer minne och är i allmänhet långsam.
Å andra sidan är en rekursiv lösning mycket enklare och tar mindre tid att skriva, felsöka och underhålla.
Rekommenderad läsning: Vilka är fördelarna och nackdelarna med rekursion?