Онлайн компилятор C

#include <stdio.h> float sinus(float x) { float sum = 0; float term = x; int n = 1; while (term > 0.001f || term < -0.001f) { n += 2; term = term * (-x * x) / ((n - 1) * n); sum += term; } return sum; }
这段代码试图计算正弦函数的近似值,但存在逻辑错误。它使用泰勒级数展开,但循环中的计算顺序和初始条件有问题。

- 循环开始时,`sum` 初始为0,但第一项 `x` 没有被加到 `sum` 中。循环直接计算下一项并累加,导致缺少了第一项。
- 循环条件检查 `term` 的绝对值是否大于0.001,但 `term` 在循环开始时是 `x`,如果 `x` 本身小于0.001,循环会直接跳过,返回0,这显然不对。