Я пытаюсь вычислить ln (x) сериями Тейлора. Вот мой код:Логарифмические вычисления без math.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
, и после нее ничего не происходит. У вас есть идеи, почему это так?
Мне нравится ваш подход к отладке здесь - вы положили «трассировщик», распечатав значение в каждом цикле, тем самым зная наверняка, где была проблема. Продвиньте меня! –