gpt4 book ai didi

c - C中如何跳出循环

转载 作者:太空宇宙 更新时间:2023-11-04 05:42:25 25 4
gpt4 key购买 nike

我正在编写一个二分法算法来求多项式的根。我的代码的第二部分说,如果变量 FP 等于零或 b-a 的绝对值,我猜它只是打破了 if 语句。

我希望程序完全停止 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);
}

最佳答案

您的 printf 语句未命中,因为您在 break 语句之前有一个 return p;return 语句立即退出函数。

需要将return语句移到printf之后,或者将printf移到return之前:

        if(FP == 0 || abs(b-a) < epsilon)
{
printf("the number of iterations is : %d\n", i);
return p;
}
...

printf("failed to converge after %d iterations\n", i);
return p;
}

关于c - C中如何跳出循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14877861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com