Pregunta

Así que estoy obligado a calcular recursivamente E ^ X usando una forma factorizada de una serie de Taylor:

Ecuación: E ^ x= 1 + x + (x ^ 2) / 2! + ... + ((x ^ n) / n!))

Forma factorizada: e ^ x= 1 + x (1 + x / 2 * (1 + x / 3 * (... (1 + x / n)))

En la definición de función a continuación, 'X' es la potencia y 'n' es el número total de términos para estimar e ^ x. Preferiría si alguien pudiera señalarme en la dirección correcta. He intentado muchas formas diferentes, incluido el uso de un caso base del término más interno de la ecuación factorizada, pero en vano.

static double eThree(double x, long n) {
   //this is what i tried
   if(n==0){
        return 1 +x/n;
    }else{
        double a= (1+(x/n)) * (eThree(x,n-1));
        System.out.println(a);
        return a;
    }


}

Me he dado cuenta de que 'n' debería aumentar no disminuir a medida que he intentado, sin embargo, la llamada original a la función tiene el número total de iteraciones en la variable 'n' y no hay manera de realizar un seguimiento del número total de iteraciones en todas las llamadas recursivas.

El valor del divisor de cada término en (1 + (x / n)), donde n es el divisor, debe aumentar en uno cada vez, y en la iteración final sea igual al número total de iteraciones.

¿Fue útil?

Solución

Dado que el método es estático, en realidad puede almacenarlo en una variable estática en la primera llamada.Tendrá que lanzar una declaración de IF para verificar si es la primera iteración también.Añadiré código más tarde, pero no tengo tiempo en este momento.

O puede hacer un seguimiento del número de iteraciones en una variable.Delegado a otro método, que es el método recursivo "real", y pasa diferentes argumentos.

Todo tipo de diferentes soluciones posibles.

Podría convertirlo en un bucle, pero eso posiblemente no impresionará a su supervisor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top