所以我需要使用泰勒级数的因式形式递归计算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,并且在最后的迭代中等于迭代的总数。
答案 0 :(得分:0)
由于该方法是静态的,因此您实际上可以在第一次调用中将其存储在静态变量中。你需要抛出一个if语句来检查它是否也是第一次迭代。我稍后会添加代码,但现在没有时间。
或者您可以跟踪变量中的迭代次数。委托另一个方法,它是“真正的”递归方法,并传递不同的参数。
各种可能的解决方案。
您可以将其转为循环,但这可能不会给您的主管留下深刻印象。