使用使用MacLaurin系列计算e ^ x的递归方法

时间:2014-02-26 11:11:21

标签: 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)

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

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