W tym samouczku poznasz funkcję rekurencyjną języka Java, jej zalety i wady.
W Javie metoda, która wywołuje samą siebie, jest znana jako metoda rekurencyjna. Ten proces jest znany jako rekurencja.
Przykładem świata fizycznego byłoby ustawienie dwóch równoległych luster naprzeciw siebie. Każdy obiekt pomiędzy nimi zostałby odzwierciedlony rekurencyjnie.
Jak działa rekursja?

W powyższym przykładzie wywołaliśmy recurse()
metodę z wnętrza main
metody. (zwykłe wywołanie metody). Wewnątrz metody recurse () ponownie wywołujemy tę samą metodę recurse. To jest wywołanie rekurencyjne.
Aby zatrzymać wywołanie rekurencyjne, musimy podać pewne warunki wewnątrz metody. W przeciwnym razie metoda będzie wywoływana w nieskończoność.
Dlatego używamy instrukcji if… else (lub podobnego podejścia), aby zakończyć wywołanie rekurencyjne wewnątrz metody.
Przykład: silnia liczby przy użyciu rekursji
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); ) )
Wyjście :
Silnia 4 = 24
W powyższym przykładzie mamy metodę o nazwie factorial()
. Wywoływana factorial()
jest z main()
metody. ze zmienną liczbową przekazaną jako argument.
Zwróć uwagę na oświadczenie:
return n * factorial(n-1);
factorial()
Metoda nazywająca siebie. Początkowo wartość n wynosi 4 wewnątrz factorial()
. Podczas następnego wywołania rekurencyjnego do factorial()
metody przekazywane jest 3 . Ten proces trwa, aż n jest równe 0.
Gdy n jest równe 0, if
instrukcja zwraca fałsz, dlatego zwracane jest 1. Ostatecznie skumulowany wynik jest przekazywany do main()
metody.
Działanie programu czynnikowego
Poniższy obraz daje lepsze wyobrażenie o tym, jak program silnia jest wykonywany przy użyciu rekurencji.

Zalety i wady rekursji
Gdy wykonywane jest wywołanie rekurencyjne, na stosie alokowane są nowe miejsca przechowywania zmiennych. Po powrocie każdego wywołania rekurencyjnego stare zmienne i parametry są usuwane ze stosu. Dlatego rekurencja generalnie zużywa więcej pamięci i jest generalnie wolna.
Z drugiej strony rozwiązanie rekurencyjne jest znacznie prostsze i zajmuje mniej czasu na pisanie, debugowanie i konserwację.
Zalecana lektura: Jakie są zalety i wady rekurencji?