0

我的 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;
    }
}

任何帮助表示赞赏。

4

1 回答 1

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

于 2013-05-03T01:03:39.477 回答