Was ist Java-Rekursion?
Das Szenario, in dem sich eine Funktion oder Methode selbst aufruft, wird als Rekursion bezeichnet, und eine solche Funktion oder Methode wird als rekursive Funktion oder rekursive Methode bezeichnet. Dieser Ansatz wird immer verwendet, um komplexe Probleme in ein einfaches und leichter zu schreibendes Problem zu zerlegen. Ein einfaches Beispiel besteht darin, zwei Spiegel voreinander zu platzieren und sie beginnen, sich gegenseitig rekursiv zu reflektieren, was Sie leicht erkennen können.Indirekte Rekursion
Das obige Beispiel stellt die indirekte Rekursion dar , d. h. Funktion eins ruft Funktion zwei auf und Funktion zwei ruft Funktion eins auf.Direkte Rekursion
Wenn sich eine Methode immer wieder selbst aufruft, spricht man von direkter Rekursion .Haltebedingung
Jetzt werden Sie sich fragen, ob eine Methode, die sich selbst immer wieder aufruft, mit Sicherheit einen Stapelüberlauffehler erleiden wird . Ja, Sie haben Recht, wie bei einer Endlosschleife kann es zu einer unendlichen Rekursion kommen. Wir müssen eine Basisbedingung oder eine Beendigungsbedingung bereitstellen, um diese unendliche Rekursion zu stoppen, die als Stoppbedingung bezeichnet wird. Diese Bedingung wird immer innerhalb der Rekursionsmethode bereitgestellt, was wir im folgenden Beispiel im Detail sehen werden.Rekursionsbeispiel
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);
}
}
Beispielausgabe
5 Fakultät = 120 10 Fakultät = 3628800
In diesem Beispiel einer rekursiven Methode haben wir eine Funktion, die von der Hauptmethode aufgerufen wird. Wir haben den Wert 5 übergeben, um zu sehen, was seine Fakultät ist, nämlich 120. Diese Fakultätsfunktion ruft sich selbst erneut auf, indem sie den Wert 4 übergibt, der erneut den Wert 3 aufruft und übergibt, und so weiter, bis die Haltebedingung erfüllt ist erfüllt, was dem Wert 0 entspricht. Das Gleiche passiert, wenn wir den Wert von 5 auf 10 ändern.