我正在寫一個二分法算法來找到多項式的根。我的代碼的第二部分說,如果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