Co to jest rekurencja w Javie?
Scenariusz, w którym funkcja lub metoda wywołuje samą siebie, nazywany jest rekurencją, a taka funkcja lub metoda jest nazywana funkcją lub metodą rekurencyjną. Podejście to jest zawsze używane do dzielenia złożonych problemów na proste i łatwiejsze do napisania. Prostym przykładem jest umieszczenie dwóch lusterek naprzeciwko siebie i zaczną one odbijać się rekurencyjnie, co można łatwo zobaczyć.Rekurencja pośrednia
Powyższy przykład przedstawia rekurencję pośrednią , czyli funkcja pierwsza wywołująca funkcję drugą i funkcja druga wywołująca funkcję pierwszą.Rekurencja bezpośrednia
Kiedy metoda wywołuje samą siebie raz za razem, nazywa się to rekurencją bezpośrednią .Stan zatrzymania
Teraz będziesz się zastanawiać, czy metoda wywołuje samą siebie raz za razem, to na pewno napotka błąd przepełnienia stosu . Tak, masz rację, podobnie jak nieskończona pętla może przejść w nieskończoną rekurencję. Musimy podać warunek podstawowy lub warunek zakończenia , aby zatrzymać tę nieskończoną rekurencję, znaną jako warunek zatrzymania, a warunek ten jest zawsze zapewniany w metodzie rekurencyjnej, co zobaczymy szczegółowo w poniższym przykładzie.Przykład rekurencji
class Recursion {
static int factorial( int n ) {
// base condition or termination condition
if (n != 0)
// here we are calling the recursive method
return n * factorial(n-1);
else
return 1;
}
public static void main(String[] args) {
// initializing the variables
int number = 5, result;
result = factorial(number);
System.out.println(number + " factorial = " + result);
// changing the value from 5 to 10
number = 10;
result = factorial(number); // recursive function call
System.out.println(number + " factorial = " + result);
}
}
Przykładowe wyjście
5 silnia = 120 10 silnia = 3628800
W tym przykładzie metody rekurencyjnej mamy funkcję silni wywoływaną z metody głównej. Przekazaliśmy wartość 5, aby zobaczyć, jaka jest jej silnia, czyli 120. Ta funkcja silni wywołuje się ponownie, przekazując wartość 4, która ponownie wywołuje i przekazuje wartość 3 itd., aż do spełnienia warunku zatrzymania met, czyli wartość 0. To samo dzieje się, gdy zmienimy wartość z 5 na 10.