0

したがって、テイラー級数の因数分解された形式を使用して e^x を再帰的に計算する必要があります。

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

因数分解された形式: e^x = 1 + x (1+x/2*(1+x/3*(...(1+x/n))))

以下の関数定義で、「x」は累乗、「n」は e^x を推定する項の総数です。誰かが私を正しい方向に向けることができれば幸いです。因数分解された方程式の最も内側の項の基本ケースを使用するなど、さまざまな方法を試しましたが、役に立ちませんでした。

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


}

私が試みたように、「n」は減少するのではなく増加する必要があることに気付きましたが、関数への元の呼び出しには変数「n」の反復の総数が含まれており、全体の反復の総数を追跡する方法はありませんすべての再帰呼び出し。

(1 +(x/n)) の各項の除数の値 (n は除数) は、毎回 1 ずつ増加し、最後の反復では反復の合計数に等しくなります。

4

1 に答える 1

0

メソッドは静的であるため、実際には最初の呼び出しで静的変数に格納するだけです。最初の繰り返しかどうかを確認するには、if ステートメントを挿入する必要があります。後でコードを追加しますが、今は時間がありません。

または、変数の反復回数を追跡できます。「本当の」再帰メソッドである別のメソッドに委譲し、異なる引数を渡します。

あらゆる種類のさまざまな可能なソリューション。

あなたはそれをループに変えることができますが、それはあなたの上司に感銘を与えないでしょう.

于 2014-02-25T03:47:16.217 に答える