为什么这个 C++ 函数会产生混乱的输出?

Why does this C++ function produce chaotic output?

我有以下代码:

int main ( int argc, char **argv ){
double lambda = 4;
double x = .2;

for ( int i=1; i<=30; i++ )
  {
    printf( "%.5f \n", x );
    x = lambda * x * (1-x);
  }           
}

输出如下:

0.20000 0.64000 0.92160 0.28901 0.82194 0.58542 0.97081 0.11334 0.40197 0.96156 0.14784 0.50392 0.99994 0.00025 0.00098 0.00394 0.01568 0.06174 0.23173 0.71212 0.82001 0.59036 0.96734 0.12638 0.44165 0.98638 0.05374 0.20342 0.64815 0.91221

我的问题是:对于每次迭代操作 'x' 的方式,最恰当的 algorithmic/mathematical 描述是什么?

对于循环的每次迭代,根据涉及 x 旧值的一些计算,变量 x 被赋予一个新值。变量 i 仅用于限制此计算重复的次数。

同样,您可以更简单地更改 x 的值(无需使用 i):

x = x + 1;

使用它代替 x = lambda * x * (1-x); 行并观察值如何增加。

您在以下语句 x = lambda * x * (1-x); 中使用了 x。这样 x 值在每次迭代时都会改变。

for循环中的"i"被称为迭代变量,这意味着它将被用作跟踪编号的计数器。循环的迭代次数。

然而,"x" 是您要在循环中使用的变量。

您可以尝试在循环中打印 i 和 x 的值以了解迭代的概念。