English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java-Grundlagen-Tutorial

Java Flusskontrolle

Java Array

Java objektorientiert (I)

Java objektorientiert (II)

Java objektorientiert (III)

Java-Exception-Verarbeitung

Java Liste (Liste)

Java Queue (Warteschlange)

Java Map-Kollektion

Java Set-Kollektion

Java Eingabe-Ausgabe (I/O)

Java Reader/Writer

Andere Themen von Java

Java-Recursion

In diesem Tutorial werden Sie die Java-Rekursionsfunktion und ihre Vor- und Nachteile kennenlernen.

In Java, das Selbe aufrufenMethodeGekennzeichnet als rekursiver Methodenname. Und dieser Prozess wird als Rekursion bezeichnet.

Ein Beispiel aus der physischen Welt ist das Platzieren von zwei parallelen Spiegeln, die sich gegenüberstehen. Jedes Objekt zwischen ihnen wird rekursiv reflektiert.

Wie funktioniert Rekursion?

Datenflussdiagramm der Java-Rekursion

Im obigen Beispiel haben wir die Methode recurse() aus dem main-Methode intern aufgerufen. (Normaler Methodenaufruf). Und innerhalb der Methode recurse() rufen wir den gleichen recurse-Methode erneut auf. Dies ist eine Rekursion.

Um die Rekursion zu beenden, müssen wir einige Bedingungen innerhalb der Methode bereitstellen. Andernfalls wird diese Methode unendlich aufgerufen.

Daher verwenden wirif ... else-Anweisung(oder ähnliche Methode)Beenden Sie die Rekursion innerhalb der Methode.

Beispiel: Rekursive Fakultät

class Factorial {
    static int factorial(int n) {
        if (n != 0)  // Abbruchbedingung
            return n * factorial(n-1); //Rekursion aufrufen
        else
            return 1;
    }
    public static void main(String[] args) {
        int number = 4, result;
        result = factorial(number);
        System.out.println(number + "Fakultät von = " + result);
    }
}

Ausgabe:

4 Fakultät von = 24

Im obigen Beispiel haben wir eine Methode namens factorial(). Sie wird von der main() Methode aufgerufen. Mit dem übergebenen numerischen Variablen als Parameter.

Hier beachten Sie die folgenden Anweisungen:

return n * factorial(n-1);

Die factorial() Methode ruft sich selbst auf. Zunächst ist der Wert von n im factorial() intern4. Während des nächsten rekursiven Aufrufs wird3. Dieser Prozess setzt sich fort, bis n gleich 0 ist.

Wenn n gleich 0 ist, gibt das if-Statement false zurück und kehrt daher zurück1. Schließlich wird das akkumulierte Ergebnis an die main() Methode übergeben.

Arbeitsablauf des Fakultät-Programms

Das folgende Diagramm wird Ihnen helfen, besser zu verstehen, wie Sie das Fakultät-Programm mit Rekursion ausführen.

Fakultät-Programm mit Rekursion verwenden

Vorteile und Nachteile der Rekursion

Bei einer rekursiven Aufruf wird ein neuer Speicherort für die Variablen auf dem Stack zugewiesen. Mit jedem Rückruf einer rekursiven Aufruf werden alte Variablen und Parameter aus dem Stack gelöscht. Daher verwendet rekursives Oft mehr Speicher und ist in der Regel langsamer.

Andererseits ist die rekursive Lösung einfacher und erfordert weniger Zeit für die Schreibweise, das Debugging und die Wartung.