do..while 循环不停止

do..while loop not stopping

我正在尝试创建间隔半潜水方法(数值方法),但在程序中有一个 do/while 循环,它无法正常工作:

double Funkcija(double x){
    double result = -1/(1+abs(x));
    return result;
}

...

double x[20] = {};
x[0] = 1; //initial point
int k = 1;  // index (from 1 because 0 is giving (x0)
do
{
    cout << "x[" << k << "]= ";
    x[k] = x[k - 1] - pow(2, k - 1)*abs(d);
    cout << x[k] << "\t";
    cout << "f(x[" << k << "])= " << Funkcija(x[k]) << endl;
    k++;
} while (Funkcija(x[k]) < Funkcija(x[k-1]));

我得到的是:

我需要在 x[4] 之前停止循环,因为 f(x[3]) > f(x[2]),也许有人看到我的错误?

这是一个 "off by one" 错误。您在循环测试之前增加了 k,因此您正在测试错误的索引 - 比较 k - 1k - 2 处的元素,一切都应该没问题。

请注意,如果您在调试器中单步执行代码,一边检查变量,那么错误很快就会变得明显。当您学习编程时,这是一项重要的技能。