再帰とテイラー系列を使ってE ^ Xを計算します
-
20-12-2019 - |
質問
だから私はテイラーシリーズの因数関節を使って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は除数で、最後の反復では反復回数と等しくなるはずです。
解決
この方法は静的なので、最初の通話では実際には静的変数に保存するだけです。最初の反復であるかどうかを確認するためにIFステートメントを投げる必要があります。後でコードを追加しますが、今すぐ時間がない。
または可変の反復数を追跡することができます。「実際の」再帰的メソッドである別の方法に参加し、異なる引数を渡します。
あらゆる種類の異なる解決策
ループに変えることができますが、それはおそらくあなたのスーパーバイザーを感動させないでしょう。
所属していません StackOverflow