簡體   English   中英

為什么此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”的方式,最恰當的算法/數學描述是什么?

對於循環的每次迭代,都會根據涉及x的舊值的一些計算為變量x分配一個新值。 變量i僅用於限制此計算重復的次數。

類似地,您可以以一種更簡單的方式更改x的值(不使用i ):

x = x + 1;

用它代替x = lambda * x * (1-x); 線,觀察值如何增加。

您在以下語句中使用x x = lambda * x * (1-x); 這樣, x值在每次迭代時都會更改。

for循環中的“ i”被稱為迭代變量,這意味着它將用作跟蹤no的計數器。 循環的迭代次數。

而“ x”是您要在循環中使用的變量。

您可以嘗試在循環中同時打印i和x的值,以了解迭代的概念。

暫無
暫無

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

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