我正在尝试创建间隔半潜水方法(数值方法),并且在程序中有一个do / while循环,它无法正常工作:
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]));
...
var table = $('#example').DataTable({
columns: [
null,
null,
{
"render": function(data, type, row){
return data.split(", ").join("<br/>");
}
}
]
});
我得到的是:
我需要在x [4]之前停止循环,因为f(x [3])&gt; f(x [2]),也许有人看到我的错误?
答案 0 :(得分:2)
这是一个“一个接一个”的错误。你在循环测试之前增加了k
,所以你正在测试错误的索引 - 比较k - 1
和k - 2
的元素,一切都应该没问题。
请注意,如果您在调试器中单步执行代码,随时检查变量,那么错误很快就会变得明显。当你学习编程时,这是一项重要的技能。