我正在写一个二分法算法来找到多项式的根。我的代码的第二部分说,如果FP等于零或绝对值b-a
它只是打破了我猜的if语句。如何摆脱循环c
我希望程序完全停止for循环(迭代)并返回p。最后,我想打印获得解决方案所需的迭代次数,但显然使用我的printf语句,它显示程序仍然执行,即使认为获得了根(零)。
任何关于如何停止整个机制的想法,并返回p的值为零和确切的迭代次数?由于
double computeroots(double a, double b, double epsilon, int MaxIter)
{
double FA = pow(a,4) -4*a + 1;
double FB = pow(b,4) - 4*b + 1;
double FP;
double p;
int i;
for(i=0;i<MaxIter;i++) {
if(FA * FB < 0) {
p = a + (b-a)/2;
FP = pow(p,4) - 4*p +1;
if(FP == 0 || abs(b-a) < epsilon) {
return p;
break;
} else if (FA * FP >0) {
a =p;
FA = FP;
} else {
b = p;
FB = FP;
}
i++;
}
}
printf("the number of iterations is : %d\n", i);
}
我没有改变你的标题第二递增,但它绝对是误导性的。你只有一个循环,而不是外部循环和嵌套循环。 – 2013-02-14 15:15:57
你正在增加'i'两次,所以你只运行一半的迭代。 – 2013-02-14 15:16:36