c++ - 找出一个表达式来评估一个循环

标签 c++

这是一个广泛的问题,有一个具体的例子。我的问题是,您如何弄清楚如何计算循环中的算法或表达式?

在下面的示例中,我想出了如何使用一个循环来计算一个平方根,使用一个带有巴比伦算法的计数器,它似乎工作正常。

但我不知道如何在一定程度上评估它,比如在 .01 内而不使用计数器。我在网上看到其他人在没有柜台的情况下这样做,但我却无法做到。

这是我的计数器版本:

int count(20);

    while (count > 0 )
{
    if (guess <= (guess * p) + guess)
        prevGuess = guess;
    else
        r = input / guess;

    guess = (guess + r) / 2.0;
    count -= 1;
    cout << "\nGuess = " << guess;
}

我试过做这样的事情:

while ((guess - lastGuess) / lastGuess)

while(guess - lastGuess * .01)

但我要么只得到一次交互,要么得到一个无限循环。

确定如何在循环内评估任何算法的好方法是什么?

我的意思不仅仅是这个小程序,我的意思是任何东西,甚至像 x + y = 2 这样的东西。

你会做这样的事情吗:

while(x + y !=2) {}

谢谢!

最佳答案

通常这种计算会在下一次迭代对值的改变不大时停止;例如

for(;;) {
    double next_v = (v + (n / v)) / 2;
    if (fabs(v - next_v) < eps) break; // We got there
    v = next_v;
}

其中 eps 是您希望结果的准确性。

关于c++ - 找出一个表达式来评估一个循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28486686/

相关文章:

c++ - 重载运算符 == & !=

c++ - 假设只有最后一行会有不包含3个值的错误,我如何使用流提取运算符读取文件

c++ - 删除字符指针数组

c++ - cin.ignore(numeric_limits<streamsize>::max(), '\n')

c++ - 多个 fork 进程无限循环

c++ - CMake第三方库 undefined reference

c++ - 如何检测用户是否输入了空格键?

c++ - 将类插入 STL 映射时出现“没有匹配的调用函数”错误

c++ - 独立的多线程进程同时阻塞

c++ - Boost::处理输出空行