Java 使用使用MacLaurin级数计算e^x的递归方法

Java 使用使用MacLaurin级数计算e^x的递归方法,java,recursion,Java,Recursion,我如何编写一个递归静态方法,使用(n+1)项MacLaurin级数,通过使用以下递归公式计算e^x,称为e(x,n): e(x,0)= 1 e(x,n)= e(x,n-1) + x^n/n!, if n>0 此外,我的方法签名需要使用以下内容: public static double eTwo(double x, long n) 被困了一段时间了,有什么想法吗?这是我想到的最简单的解决方案,你试过了吗 public static double eTwo(double x, lon

我如何编写一个递归静态方法,使用(n+1)项MacLaurin级数,通过使用以下递归公式计算e^x,称为e(x,n):

e(x,0)= 1 
e(x,n)= e(x,n-1) + x^n/n!, if n>0 
此外,我的方法签名需要使用以下内容:

public static double eTwo(double x, long n)

被困了一段时间了,有什么想法吗?

这是我想到的最简单的解决方案,你试过了吗

public static double eTwo(double x, long n){
    if(n==0)
        return 1;
    else 
        return eTwo(x,n-1) + Math.pow(x, n)/factorial(n);
}

public double factorial (n){
    if(n==0)
        return 1;
    else 
        return n*factorial(n-1);
}

可能更有效的版本是使用循环而不是递归,因为只需要分配一个堆栈帧:

static double eTwo(double x, long n) {
    double result = 1;
    for (long i = 1; i < n; i++) 
        result += Math.pow(x, (double) i) / (double) factorial(i);
    return result;
}

static long factorial(long n) {
    long result = 1;
    for (long i = 1; i <= n; i++) 
        result *= i;
    return result;
}
静态双eTwo(双x,长n){
双结果=1;
用于(长i=1;i对于(长i=1;我好吧,你可以从复制并粘贴公式到你的方法中开始。这将使你大约有90%在那里。还有其他的提示吗?仍然有点卡住了。