În acest tutorial, veți afla despre funcția recursivă Java, avantajele și dezavantajele acesteia.
În Java, o metodă care se numește singură este cunoscută ca o metodă recursivă. Și acest proces este cunoscut sub numele de recursivitate.
Un exemplu fizic al lumii ar fi plasarea a două oglinzi paralele una față de cealaltă. Orice obiect între ele s-ar reflecta recursiv.
Cum funcționează recursivitatea?

În exemplul de mai sus, am apelat recurse()
metoda din interiorul main
metodei. (apel metoda normală). Și, în interiorul metodei recurse (), apelăm din nou la aceeași metodă recurse. Acesta este un apel recursiv.
Pentru a opri apelul recursiv, trebuie să oferim câteva condiții în cadrul metodei. În caz contrar, metoda va fi numită infinit.
Prin urmare, folosim declarația if … else (sau o abordare similară) pentru a termina apelul recursiv din interiorul metodei.
Exemplu: Factorialul unui număr folosind recursivitate
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); ) )
Ieșire :
4 factorial = 24
În exemplul de mai sus, avem o metodă numită factorial()
. Se factorial()
apelează din main()
metodă. cu variabila număr trecută ca argument.
Aici, observați declarația,
return n * factorial(n-1);
factorial()
Metoda este autointitulat. Inițial, valoarea lui n este 4 în interior factorial()
. În timpul următorului apel recursiv, 3 este trecut la factorial()
metodă. Acest proces continuă până când n este egal cu 0.
Când n este egal cu 0, if
declarația returnează fals, prin urmare se returnează 1. În cele din urmă, rezultatul acumulat este transmis main()
metodei.
Lucrul programului factorial
Imaginea de mai jos vă va oferi o idee mai bună despre modul în care programul factorial este executat folosind recursivitate.

Avantajele și dezavantajele recursivității
Când se face un apel recursiv, noi locații de stocare pentru variabile sunt alocate pe stivă. Pe măsură ce, fiecare apel recursiv revine, vechile variabile și parametri sunt eliminați din stivă. Prin urmare, recursivitatea folosește în general mai multă memorie și este în general lentă.
Pe de altă parte, o soluție recursivă este mult mai simplă și necesită mai puțin timp pentru a scrie, depana și întreține.
Lectură recomandată: Care sunt avantajele și dezavantajele recursivității?