private static double rombergGradoN(double extremoIzq, double extremoDer, Funcion fun, double k, double n){
        if (n == 0){
            //Si el grado es 0, significa que tengo que calcular trapecio, por lo que me devuelve T(h/2^k)
            return trapecio(extremoIzq, extremoDer, fun, k);
        } else {
            //Devuelve Rn(h/2^k) = ((4^n * Rn-1(h/2^k+1)) - Rn-1(h/2^k)) / ((4^n) - 1)
            return ((Math.pow(4,n) * rombergGradoN(extremoIzq, extremoDer, fun, k + 1, n - 1)) -
                    rombergGradoN(extremoIzq, extremoDer, fun, k, n - 1)) / (Math.pow(4, n) - 1);
        }
    }