2014-02-25 70 views
0

因此,我需要遞歸地計算E 1 X使用泰勒級數一個因子形式:計算E 1 X使用遞歸和泰勒級數

等式:E 1 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,最後一次迭代的次數等於總迭代次數。

+0

正如通常的情況在這裏 - 請顯示你已經嘗試過。 –

回答

0

由於該方法是靜態的,因此您可以在第一次調用時將其存儲在靜態變量中。你需要拋出if語句來檢查它是否是第一次迭代。我會稍後添加代碼,但現在沒有時間。

或者您可以跟蹤變量中的迭代次數。委託給另一種「真正的」遞歸方法,並傳遞不同的參數。

各種不同的可能的解決方案。

你可以把它變成一個循環,但這可能不會打動你的主管。