【发布时间】:2020-12-12 08:20:27
【问题描述】:
#include<iostream>
using namespace std;
double log(double x,int n)
{
static double p = x ;
double s;
if(n==1)
return x;
else
{
s=log(x,n-1);
p*=x;
if(n%2==0)
return s - (p/n);
else
return s + (p/n);
}
}
int main()
{
double r = log(1,15);
cout << r;
return 0;
}
我尝试编写上面的函数来评估 log(1+x) 函数,使用它的带有递归的泰勒级数。但它并没有像我预期的那样给出结果。 例如: ln(2) = 0.693 而我的代码给出了 0.725。在上面的代码中,n 表示词条的数量。 另外我是这个平台的新手,所以我可以说上面的问题是完整的还是需要一些额外的信息来进一步解释?
【问题讨论】:
-
顺便说一句:如果您像在
n%2==0中那样将运算符混合在一个术语中,那么使用括号是一个很好且易于阅读的想法。操作员优先级是一个常见的陷阱。括号有助于避免它。(n%2)==0使目的更加明显。 -
感谢您的建议。在编写其他程序时,我一定会牢记这一点!