¿Qué es la recursividad de Java?

El escenario en el que una función o método se llama a sí mismo se conoce como recursividad y dicha función o método se conoce como función recursiva o método recursivo. Este enfoque siempre se utiliza para dividir problemas complejos en uno simple y más fácil de escribir. Un ejemplo sencillo es colocar dos espejos uno frente al otro y empezarán a reflejarse entre sí de forma recursiva, lo que podrás ver fácilmente.

Recursión indirecta

El ejemplo anterior representa la recursividad indirecta , es decir, la función uno llama a la función dos y la función dos llama a la función uno.

Recursión directa

Cuando un método se llama a sí mismo una y otra vez, se llama recursividad directa .

Condición de detención

Ahora estará pensando si un método se llama a sí mismo una y otra vez, entonces seguramente enfrentará un error de desbordamiento de pila . Sí, tienes razón, como un bucle infinito, puede entrar en una recursión infinita. Debemos proporcionar una condición base o una condición de terminación para detener esta recursividad infinita, lo que se conoce como condición de detención, y esta condición siempre se proporciona dentro del método recursivo, que veremos en detalle en el siguiente ejemplo.

Ejemplo de recursividad

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

Salida de ejemplo

5 factores = 120 10 factores = 3628800
En este ejemplo de método recursivo tenemos una función factorial llamada desde el método principal. Pasamos un valor de 5 para ver cuál es su factorial, que es 120. Esta función factorial se llama a sí misma nuevamente pasando el valor de 4, que nuevamente llama y pasa el valor de 3, y así sucesivamente, hasta que se cumpla la condición de detención. cumplió, que es el valor de 0. Lo mismo sucede cuando cambiamos el valor de 5 a 10.

Ventajas y desventajas de la recursividad

Un código recursivo es sencillo de escribir, depurar y mantener, lo que ahorra tiempo. Pero por otro lado, con cada llamada se consume memoria para las variables, y debido a esto podemos quedarnos sin memoria.

Conclusión

Esperamos que comprenda la recursividad de Java y cómo implementarla, así como sus ventajas y desventajas. Siéntete libre de practicar y volver cuando necesites más ayuda. ¡Feliz aprendizaje!