Der Vorgang, bei dem sich eine Funktion direkt oder indirekt selbst aufruft, heißt Rekursion und die entsprechende Funktion heißt rekursive Funktion . Im rekursiven Programm wird die Lösung für den Basisfall bereitgestellt und die Lösung des größeren Problems wird in kleineren Problemen ausgedrückt. Hier rekursiver Konstruktoraufruf und Stapelüberlauffehler in Java. Es ist wie unten im Beispiel wie folgt dargestellt:

Beispiel 

Java

// Java Program to Illustrate Recursion
  
// Main class
public class GFG {
  
    static int count = 0;
  
    // Method 1
    // Recursive method
    static void function()
    {
        count = count + 1;
        if (count <= 5) {
  
            System.out.println("Call " + count);
            function();
        }
    }
  
    // Method 2
    // Main driver method
    public static void main(String[] args) { function(); }
}
Ausgabe
Anruf 1
Anruf 2
Anruf 3
Anruf 4
Anruf 5

Rekursiver Konstruktoraufruf

Ruft sich ein Konstruktor selbst auf, dann kommt die Fehlermeldung „rekursiver Konstruktoraufruf“. Das folgende Programm wird vom Compiler nicht zugelassen, da wir innerhalb des Konstruktors versucht haben, denselben Konstruktor aufzurufen. Der Compiler erkennt es sofort und gibt einen Fehler aus.

Beispiel:

Java

// Java program to Illustrate How Recursive
// Constructor Invocation Error is Occured
  
// Main class
class GFG {
  
    // Constructor of this class
    // Inside we are trying to call the same constructor
    GFG()
    {
        // This keyword refers to same instance itself
        this();
    }
  
    // Main driver method
    public static void main(String[] args)
    {
  
        // Creating an object of class inside main()
        GFG obj = new GFG();
    }
}

Ausgabe:

Lassen Sie uns nun besprechen, worauf wir uns bei einem Stapelüberlauffehler genau beziehen und warum er auftritt . Ein Stapelüberlauffehler tritt auf, wenn wir unserer rekursiven Funktion oder Vorlage nicht die richtige Beendigungsbedingung zuweisen, was bedeutet, dass sie sich in eine Endlosschleife verwandelt.

Implementierung:

Hier haben wir ein GFG-Objekt innerhalb des Konstruktors erstellt, das durch Aufrufen des Konstruktors initialisiert wird, der dann ein weiteres GFG-Objekt erstellt, das erneut durch Aufrufen des Konstruktors initialisiert wird und so lange weiterläuft, bis der Stapel überläuft. Dies lässt sich anhand der Abbildung wie folgt begründen:

Beispiel:

Java

// Java program to Illustrate Stack Overflow Error
  
// Main class
public class GFG {
  
    // Constructor of this class
    GFG()
    {
  
        // Creating an object of GFG class inside the
        // constructor which is initialized by calling the
        // constructor, which is initialized by
        // calling the constructor and it goes on
        GFG obj1 = new GFG();
    }
  
    // Main driver method
    public static void main(String[] args)
    {
  
        // Creating an object of this class
        GFG obj = new GFG();
    }
}

Ausgabe: