Invocación de constructor recursivo en Java

El proceso en el que una función se llama a sí misma directa o indirectamente se llama recursividad y la función correspondiente se llama función recursiva. En el programa recursivo, se proporciona la solución al caso base y la solución del problema más grande se expresa en términos de problemas más pequeños. Aquí invocación de constructor recursivo y error de desbordamiento de pila en java. Es como se muestra a continuación en el ejemplo de la siguiente manera:

Ejemplo 

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(); }
}
Producción

Call 1
Call 2
Call 3
Call 4
Call 5

Invocación de constructor recursivo

Si un constructor se llama a sí mismo, aparece el mensaje de error «invocación de constructor recursivo». El compilador no permite el siguiente programa porque dentro del constructor intentamos llamar al mismo constructor. El compilador lo detecta instantáneamente y arroja un error.

Ejemplo:

Java

// Java program to Illustrate How Recursive
// Constructor Invocation Error is Occurred
 
// 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();
    }
}

Producción:

Ahora analicemos a qué nos referimos exactamente con el error de desbordamiento de pila y por qué ocurre . Se produce un error de desbordamiento de pila si no proporcionamos la condición de terminación adecuada para nuestra plantilla o función recursiva, lo que significa que se convertirá en un bucle infinito.

Implementación:

Aquí hemos creado un objeto GFG dentro del constructor que se inicializa llamando al constructor, que luego crea otro objeto GFG que se inicializa nuevamente llamando al constructor y continúa hasta que la pila se desborda. Esto se puede justificar a partir de la ilustración de la siguiente manera:

Ejemplo:

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();
    }
}

Producción:

Publicación traducida automáticamente

Artículo escrito por dattabikash505 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *