Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用递归和泰勒级数计算e^x_Java_Recursion_Taylor Series - Fatal编程技术网

Java 用递归和泰勒级数计算e^x

Java 用递归和泰勒级数计算e^x,java,recursion,taylor-series,Java,Recursion,Taylor Series,所以我需要使用泰勒级数的分解形式递归计算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

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

或者可以跟踪变量中的迭代次数。委托给另一个方法,即“实”递归方法,并传递不同的参数

各种不同的可能解决方案

你可以把它变成一个循环,但这可能不会给你的主管留下深刻印象。

就像这里通常的情况一样,请展示你的尝试。