好吧,我花了过去 2 个小时来处理这个问题,调整了代码一百次,但我什么也没得到。没有错误,也没有警告,但答案是错误的。这是我的代码:
#include <iostream>
using namespace std;
void main()
{
/***********Variable Declarations************/
double count = 1, totalValue = 0, it, x, z=1, powe = 1, y;
cout << "Iterations=";
cin >> it;
cout << "x=";
cin >> x;
/***************End User Input***************/
while (count <= it)
{
for (int i = 0; i < powe; i++) {
z *= (x - 1) / (x + 1);
}
y = (1 / powe)*z;
totalValue = totalValue + y;
powe = powe + 2;
count++;
}
cout << "The Result is:" << 2*totalValue << endl;
}
我知道这是一个逻辑(数学)问题,但我似乎找不到它。谢谢。
编辑:我们不允许使用任何其他库。
最佳答案
你的方法效率低下,实现也是错误的。
这是错误的,因为计算2N
次方的内部循环已损坏。您需要每次在内循环之前将 z
重置为 1。
但不要这样做,你根本不需要内部循环。
为了计算该系列的第 N
个成员,您不需要从一开始就计算同一旧数字的 2N
次方。您刚刚在上一步中计算了该数字的 2N-2
次方。使用它。
关于c++ - 在 C++ 中使用泰勒级数求数字的自然对数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46879166/