簡體   English   中英

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]),也許有人看到我的錯誤?

這是一個“一對一”錯誤。 您在循環測試之前增加了k ,因此您正在測試錯誤的索引 - 比較k - 1k - 2處的元素,一切都應該沒問題。

請注意,如果您在調試器中單步執行代碼,一邊檢查變量一邊檢查,那么錯誤很快就會變得明顯。 這是您在學習編程時需要掌握的一項重要技能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM