所以我需要使用泰勒系列的常规形式递归地计算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语句来检查它是否也是第一次迭代。我稍后添加代码,但现在没有时间。

或者您可以跟踪变量中的迭代次数。委托为另一种方法是“真实”递归方法,并通过不同的参数。

各种不同的可能解决方案。

您可以将其转换为一个循环,但这可能不会给您的主管留下深刻印象。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top