[英]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 - 1
和k - 2
處的元素,一切都應該沒問題。
請注意,如果您在調試器中單步執行代碼,一邊檢查變量一邊檢查,那么錯誤很快就會變得明顯。 這是您在學習編程時需要掌握的一項重要技能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.