我的C代码中有一个连续的循环,我无法弄清楚为什么它会以这种方式运行。我觉得我错过了一些值得注意的东西,但我出于某种原因无法看到它。以下是导致循环的代码段:
while (err > 0.0000001) {
if (err != 1.0) {
bab = ((2.0*bab) + input/(pow(bab, 2)))/3.0;
printf("The approximate cube root is %.3lf\n", bab);
err = input - bab;
}
else {
bab = ((2.0*app) + input/(pow(app, 2)))/3.0;
printf("The approximate cube root is %.3lf\n", bab);
err = input - bab;
}
}
感谢任何帮助。
答案 0 :(得分:3)
bab
(迟早)大约是input
的立方根。你设置
err = input - bab;
并测试
while (err > 0.0000001)
因此,如果input > 1 + 3*1e-7
(大致),则差异input - cube_root(input)
大于您的阈值。
您可能想要设置
err = abs(input - bab*bab*bab);
控制input
的立方根的近似值。