4
我試圖用泰勒級數計算ln(x)。這裏是我的代碼:沒有數學對數運算h
#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 < N + 1; i++);
{
// Problem here
printf("%d\n", i);
sign = sign * (-1);
xtpow *= xt;
result += xtpow * sign/i;
}
}else if(x >= 1)
{
return -1 * ln(1.0/x);
}
return result;
}
問題是與我的系列週期(見上文)。看起來像1個週期後變量i
變得相等N + 1
,並且之後沒有任何變化。你有什麼想法,爲什麼這樣?
我喜歡你在這裏調試的方法 - 你通過在每個循環中打印出值來放入一個「示蹤劑」 - 從而確定問題的確切位置。 Upvote從我! –