【发布时间】:2018-12-12 20:27:13
【问题描述】:
创建一个递归函数,迭代求解这个方程: 2x3 – 10x +4 = 0。这是解决方案,我不明白为什么当我将值 1 和 0.40400000 传递给方法solve() 时,我会得到结果 2。它是如何工作的?
public static double solve(double x)
{
double y = 2*x*x*x - 10*x + 4;
if (y > -0.01 && y < 0.01)
return x;
else return solve(x + 0.001);
}
public static void main(String[] args) {
System.out.println(solve(1));
// 0.40400000 when starting from 0
// 2 when starting from 1
}
【问题讨论】:
-
Create a recursive function that solves this equation iteratively有点自相矛盾。我还建议通过调试器运行它以查看“幕后”发生了什么 -
@GBlodgett iterative 这个词是一个数学术语。
-
这是一个公平的观察,@rustyx,但实际上通过递归计算算法实现迭代数学过程仍然没有多大意义。
-
这感觉有些常量也需要双精度数。你可能会失去一些精度。正如建议的那样,调试器会告诉你发生了什么。
标签: java