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