【发布时间】:2019-08-18 15:03:22
【问题描述】:
我需要一些关于我计算 sin Taylor 级数的递归方法的见解,该方法不能正常工作。该方法调用另外两个递归方法,即递归 pow 方法和递归阶乘方法。我将我的发现与迭代罪法进行了比较,给了我正确的解决方案。我的递归罪法中缺少什么?
sin(x)= x - x^3/3 的近似值! + x^5/5! -x^7/7!+ ...
public class SinApprox
{
public static void main (String [] args)
{
Out.println(sinx(1, 1, 2, 1, 1, 0, 1));
Out.print(sinIT(2));
}
static double sinIT(double x)
{
double sin = 0;
double a = x;
double b = 1;
double term = a/b;
double vz = 1;
double i = 1;
while(term > 0.000001)
{
i = i +2;
sin = sin + (term*vz);
a= rekursivPow(x,i);
b = rekursivN(i);
term = a/b;
vz = -1 * vz;
}
return sin;
}
static double rekursivN(double n)
{
if(n==1)
{
return 1;
}
return n * rekursivN(n-1);
}
static double rekursivPow(double x , double y)
{
if(y == 1)
{
return x ;
}
return x * rekursivPow(x , y - 1);
}
static double sinx(double i ,double n, double x, double y, double vz, double sum, double pow)
{
double term = pow / n;
if(term > 0.000001)
{
sum = sum + (term * vz);
vz = -1 * vz;
i = i +2;
n = rekursivN(i);
y = y +2;
pow = rekursivPow(x ,y);
return sinx(i, n, x , y , vz, sum, pow);
}
return sum;
}
}
【问题讨论】:
-
您是否在家庭作业练习中使用递归来实现这一点?因为如果您必须真正“真正地”实现它,那么使用递归调用执行此操作的理由几乎为零。
-
是的,这是作业,我需要将 pow 和阶乘递归方法用于我的递归 sin 方法。
标签: java recursion trigonometry taylor-series