Java中arctan函数实现故障:代码返回输入值x的问题排查
反正切函数实现问题修复
待实现函数

这是反正切函数的泰勒展开近似公式,需要累加多组项来计算arctan(x)的近似值。
原代码问题
public class arctan { public static double arctan(double x) { double sum = 0; int k = 0; double arctan1 = (Math.pow(-1, k) * (Math.pow(x, 2 * k + 1) / (2 * k + 1))); for (int i = k; i < 100; i++) { sum =+ arctan1; } return (double) arctan1; } }
你的代码有三个核心错误:
- 只计算了第一项:
arctan1只算出了k=0时的项(也就是x本身),循环里完全没更新这个值,等于重复加同一个数。 - 累加操作写错:
sum =+ arctan1是赋值操作,不是累加,正确写法是sum += arctan1。 - 返回值错误:你最后返回的是
arctan1而不是累加后的sum,自然只会输出x。
修复后的代码
public class Arctan { public static double arctan(double x) { double sum = 0.0; // 循环计算泰勒展开的每一项,k从0到99 for (int k = 0; k < 100; k++) { // 计算当前项:(-1)^k * x^(2k+1)/(2k+1) double term = Math.pow(-1, k) * Math.pow(x, 2 * k + 1) / (2 * k + 1); sum += term; } return sum; } }
修复说明:
- 直接用k作为循环变量,每次循环计算对应k的泰勒项
- 每算出一项就累加到sum中
- 最终返回累加后的sum,得到arctan(x)的近似值
- 类名改成Java规范的大驼峰命名
Arctan
内容的提问来源于stack exchange,提问作者piggii
相关产品推荐
相关产品推荐

