En este tutorial, aprenderá sobre la función recursiva de Java, sus ventajas y desventajas.
En Java, un método que se llama a sí mismo se conoce como método recursivo. Y este proceso se conoce como recursividad.
Un ejemplo del mundo físico sería colocar dos espejos paralelos uno frente al otro. Cualquier objeto entre ellos se reflejaría de forma recursiva.
¿Cómo funciona la recursividad?

En el ejemplo anterior, hemos llamado al recurse()
método desde dentro del main
método. (llamada al método normal). Y, dentro del método recurse (), volvemos a llamar al mismo método recurse. Esta es una llamada recursiva.
Para detener la llamada recursiva, necesitamos proporcionar algunas condiciones dentro del método. De lo contrario, el método se llamará infinitamente.
Por lo tanto, usamos la instrucción if… else (o un enfoque similar) para terminar la llamada recursiva dentro del método.
Ejemplo: factorial de un número mediante recursividad
class Factorial ( static int factorial( int n ) ( if (n != 0) // termination condition return n * factorial(n-1); // recursive call else return 1; ) public static void main(String() args) ( int number = 4, result; result = factorial(number); System.out.println(number + " factorial = " + result); ) )
Salida :
4 factorial = 24
En el ejemplo anterior, tenemos un método llamado factorial()
. Se factorial()
llama desde el main()
método. con la variable numérica pasada como argumento.
Aquí, observe la declaración,
return n * factorial(n-1);
El factorial()
método se llama a sí mismo. Inicialmente, el valor de n es 4 adentro factorial()
. Durante la siguiente llamada recursiva, se pasa 3 al factorial()
método. Este proceso continúa hasta que n es igual a 0.
Cuando n es igual a 0, la if
declaración devuelve falso, por lo que se devuelve 1. Finalmente, el resultado acumulado se pasa al main()
método.
Trabajo del programa factorial
La siguiente imagen le dará una mejor idea de cómo se ejecuta el programa factorial usando recursividad.

Ventajas y desventajas de la recursividad
Cuando se realiza una llamada recursiva, se asignan nuevas ubicaciones de almacenamiento para las variables en la pila. A medida que regresa cada llamada recursiva, las variables y los parámetros antiguos se eliminan de la pila. Por lo tanto, la recursividad generalmente usa más memoria y generalmente es lenta.
Por otro lado, una solución recursiva es mucho más simple y requiere menos tiempo para escribir, depurar y mantener.
Lectura recomendada: ¿Cuáles son las ventajas y desventajas de la recursividad?