Avatar ·

¿Cómo implementar recursión en Java?

¿Cómo implementar correctamente la recursión en Java? Problema con StackOverflowError

¡Hola a todos! Estoy intentando entender la recursión en Java, pero constantemente me encuentro con el error StackOverflowError. Por favor, indíquenme cómo organizar correctamente una llamada recursiva a un método para evitarlo.

Escribí una función simple para calcular el factorial de un número, pero con el valor 10000 el programa falla. Aquí está mi código:

public class RecursionTest {
    public static int factorial(int n) {
        if (n == 0) {
            return 1;
        }
        return n * factorial(n - 1);
    }

    public static void main(String[] args) {
        System.out.println(factorial(10000)); // StackOverflowError
    }
}

Ya intenté:

  1. Aumentar el tamaño del stack mediante parámetros de JVM (-Xss2m), pero esto solo retrasa el problema, no lo resuelve.
  2. Reemplazar int por long y BigInteger — el resultado es el mismo, el error en