I denne vejledning lærer du om Java rekursiv funktion, dens fordele og ulemper.
I Java er en metode, der kalder sig selv kendt som en rekursiv metode. Og denne proces er kendt som rekursion.
Et fysisk verdenseksempel ville være at placere to parallelle spejle overfor hinanden. Ethvert objekt imellem dem reflekteres rekursivt.
Hvordan fungerer Rekursion?

I ovenstående eksempel har vi kaldt recurse()
metoden indefra i main
metoden. (normal metodeopkald). Og inden i recurse () -metoden kalder vi igen den samme recurse-metode. Dette er et rekursivt opkald.
For at stoppe det rekursive opkald er vi nødt til at give nogle betingelser inde i metoden. Ellers kaldes metoden uendeligt.
Derfor bruger vi if … else-udsagnet (eller en lignende tilgang) til at afslutte det rekursive opkald inde i metoden.
Eksempel: Faktor af et tal ved hjælp af 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); ) )
Output :
4 faktor = 24
I ovenstående eksempel har vi en metode navngivet factorial()
. Det factorial()
kaldes fra main()
metoden. med nummervariablen sendt som et argument.
Her bemærker udsagnet,
return n * factorial(n-1);
Den factorial()
metode kalder sig selv. Oprindeligt er værdien af n 4 indeni factorial()
. Under det næste rekursive opkald sendes 3 til factorial()
metoden. Denne proces fortsætter, indtil n er lig med 0.
Når n er lig med 0, if
returnerer sætningen falsk , hvorefter 1 returneres. Endelig overføres det akkumulerede resultat til main()
metoden.
Arbejde med faktorprogrammet
Billedet nedenfor giver dig en bedre idé om, hvordan faktorprogrammet udføres ved hjælp af rekursion.

Fordele og ulemper ved rekursion
Når der foretages et rekursivt opkald, tildeles nye lagerplaceringer for variabler på stakken. Da hvert rekursivt opkald vender tilbage, fjernes de gamle variabler og parametre fra stakken. Derfor bruger rekursion generelt mere hukommelse og er generelt langsom.
På den anden side er en rekursiv løsning meget enklere og tager kortere tid at skrive, debugge og vedligeholde.
Anbefalet læsning: Hvad er fordele og ulemper ved rekursion?