【发布时间】:2016-08-09 12:09:21
【问题描述】:
请有人解释一下,为什么我们需要 max 和 min 之间的差小于误差(三次方程的根)?其背后的逻辑是什么?为什么我们需要返回 min?
代码如下:
#include <stdio.h>
#include <stdlib.h>
double func(double x)
{
return x * x * x + 2 * x * x - 2;
}
double zeroFinder(double min, double max, double error)
{
if ((max - min) < error)
{
return min;
}
double x = (max + min) / 2;
if (func(x) < 0)
{
min = x;
}
else
{
max = x;
}
return zeroFinder(min, max, error);
}
int main(void)
{
zeroFinder(0.0, 1.0, 0.01);
zeroFinder(0.0, 1.0, 0.001);
zeroFinder(0.0, 1.0, 0.000001);
zeroFinder(0.0, 1.0, 0.0000000001);
return 0;
}
【问题讨论】:
-
欢迎来到 Stack Overflow。请注意,在这里说“谢谢”的首选方式是投票赞成好的问题和有用的答案(一旦你有足够的声誉这样做),并接受对你提出的任何问题最有帮助的答案(这也给出了你的声誉小幅提升)。请查看About 页面以及How do I ask questions here? 和What do I do when someone answers my question?
标签: c algorithm binary-search