Frage

Daher muss ich e^x rekursiv mithilfe einer faktorisierten Form einer Taylor-Reihe berechnen:

Gleichung:e^x = 1 +x + (x^2)/2!+ ...+ ((x^n)/n!))

faktorisierte Form:e^x = 1 + x (1+x/2*(1+x/3*(...(1+x/n))))

In der folgenden Funktionsdefinition ist „x“ die Potenz und „n“ die Gesamtzahl der Terme zur Schätzung von e^x.Ich würde es vorziehen, wenn mir jemand den richtigen Weg weisen könnte.Ich habe viele verschiedene Möglichkeiten ausprobiert, einschließlich der Verwendung eines Basisfalls des innersten Termes der faktorisierten Gleichung, aber ohne Erfolg.

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;
    }


}

Mir ist klar geworden, dass „n“ zunehmen und nicht abnehmen sollte, wie ich es versucht habe. Der ursprüngliche Aufruf der Funktion enthält jedoch die Gesamtzahl der Iterationen in der Variablen „n“, und es gibt keine Möglichkeit, die Gesamtzahl der Iterationen durchgehend im Auge zu behalten alle rekursiven Aufrufe.

Der Wert des Teilers jedes Termes in (1 +(x/n)), wobei n der Teiler ist, sollte sich jedes Mal um eins erhöhen und in der letzten Iteration gleich der Gesamtzahl der Iterationen sein.

War es hilfreich?

Lösung

Da die Methode statisch ist, können Sie sie beim ersten Aufruf einfach in einer statischen Variablen speichern.Sie müssen eine if-Anweisung eingeben, um zu überprüfen, ob es sich auch um die erste Iteration handelt.Ich werde den Code später hinzufügen, habe aber momentan keine Zeit.

Oder Sie können die Anzahl der Iterationen in einer Variablen verfolgen.Delegieren Sie an eine andere Methode, die die „echte“ rekursive Methode ist, und übergeben Sie andere Argumente.

Alle möglichen Lösungsmöglichkeiten.

Sie könnten daraus eine Schleife machen, aber das würde Ihren Vorgesetzten möglicherweise nicht beeindrucken.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top