Java LanguageRecursion


Introducción

La recursión ocurre cuando un método se llama a sí mismo. Tal método se llama recursivo . Un método recursivo puede ser más conciso que un enfoque equivalente no recursivo. Sin embargo, para una recursión profunda, a veces una solución iterativa puede consumir menos espacio de pila finito de un hilo.

Este tema incluye ejemplos de recursión en Java.

Observaciones

Diseñando un Método Recursivo

Al diseñar un método recursivo, tenga en cuenta que necesita:

  • Caso base. Esto definirá cuándo se detendrá su recursión y dará salida al resultado. El caso base en el ejemplo factorial es:

    if (n <= 1) {
        return 1;
    }
    
  • Llamada recursiva. En esta declaración, vuelve a llamar al método con un parámetro cambiado. La llamada recursiva en el ejemplo factorial anterior es:

    else {
        return n * factorial(n - 1);
    }
    

Salida

En este ejemplo, calculamos el n-ésimo número factorial. Los primeros factoriales son:

0! = 1

1! = 1

2! = 1 x 2 = 2

3! = 1 x 2 x 3 = 6

4! = 1 x 2 x 3 x 4 = 24

...


Eliminación de Java y Tail-Call

Los compiladores de Java actuales (hasta Java 9 inclusive) no realizan la eliminación de la llamada de cola. Esto puede afectar el rendimiento de los algoritmos recursivos, y si la recursión es lo suficientemente profunda, puede provocar que StackOverflowError bloquee; Ver recursión profunda es problemática en Java

Recursion Ejemplos relacionados