【发布时间】:2011-05-04 15:49:48
【问题描述】:
我有以下挑战:
实现一个函数,在 a 和 b 之间的区间内搜索 sinus 函数的零点。 search-interval[lower limit, upper limit] 应该减半,直到下限和上限之间的距离小于 0.0001。
找到一个条件来决定必须在哪个减半间隔内继续搜索。因此,在将区间分成两个区间后,我们必须选择一个继续搜索。
我们假设 a 和 b 之间的区间只有一个零点。
我在第 1 点上苦苦挣扎。我已经有一些关于该主题的问题对我有很大帮助,但现在我需要在 java 中实现它,但它还没有工作。
到目前为止,这是我的代码:
private static double nullstelle(double a, double b){
double middle = (a + b)/2;
double result = middle;
if(Math.abs(a-b) > 0.0001){
double sin = Math.sin(middle);
if(sin > 0){
result = nullstelle(a, middle);
}else{
result = nullstelle(middle, b);
}
}
return result;
}
我尝试使用递归来实现,但也许另一种方式会更好,我不知道。 有什么想法吗?
【问题讨论】:
-
这不是您在此处发布的完全相同的问题吗:stackoverflow.com/questions/4086385/…
-
如果图表上的 x1 和 x2 是您用于
a和b的值,则您的测试数据违反了 2) 中的假设。 -
这不是一个新问题,只是对旧问题(实际上是两个旧问题)的重述。简单地编辑这些问题就足够了。投票结束。
-
投票结束而不是投票就足够了,问题本身还不错......
标签: java algorithm recursion iteration