没有math.h的对数计算

我正在尝试用泰勒系列计算ln(x)。 这是我的代码:

#define N 10 float ln(float x){ int i; float result; float xt; float xtpow; int sign; if(x > 0 && x <= 1){ xt = x - 1.0; sign = -1; xtpow = 1.0; result = 0; for(i = 1 ; i = 1) { return -1 * ln(1.0 / x); } return result; } 

问题出在我的系列循环中(见上文)。 似乎在1个周期后变量i变为等于N + 1 ,并且在它之后没有任何事情发生。 你知道为什么会有这样的想法吗?

似乎在1周期后变量i变为等于N + 1

删除; 在for循环之后:

 for(i = 1 ; i < N + 1; i++ ); ^ 

你的循环继续执行而不执行在for循环之后放入大括号{ }块中的代码,并且for循环只增加i直到循环中断。 在循环代码块(您在其中注释“问题在这里”)之后,以i = N + 1值执行。

我不确定,但我对if()条件表达式有另外的疑问。 您的代码模式类似于:

  if(x > 0 && x <= 1){ <-- "True for x == 1" // loop code } else if(x >= 1){ <-- "True for x == 1" // expression code here } 

所以对于x == 1其他代码永远不会执行。 检查此代码。