我正在尝试用泰勒系列计算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
其他代码永远不会执行。 检查此代码。
以上就是c/c++开发分享没有math.h的对数计算相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/560113.html