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 回答