-3

私はこのコードを持っています

for(int Variable=2; Variable<N; Variable++)
{
    Answer = b + c;
    b = c;
    c = Answer;
}

そして、それは他のすべてのコードと一緒に答えを計算するために機能します。しかし、上記のコードはどのように機能するのかわかりません....それがどのように正しい答えを与えるかについての説明を探しているだけです。ありがとう!

4

2 に答える 2

0

おそらく、次のことが役立つでしょう。コードはフィボナッチ数を反復処理するため、cは最新の番号であり、そのb直前の番号です。

于 2013-03-04T12:27:21.283 に答える
0

主に、フィボナッチ数列がどのように見えるか、そしてそれがどのように構築されるかを理解する必要があります。ここでは説明しません。インターネットで探してください。次に、各ループのステップのAnswer、b、cの値を紙に書き留めてみてください。

Variable | Answer  b  c
---------+-------------
(before) |   1     1  1
       2 |   2     1  2
       3 |   3     2  3
       4 |   5     3  5

...等々。

次に、この「紙のデバッグ」の値がフィボナッチ数列の定義に類似していることを確認すると、すべてが明らかになります。


編集:

変数のスコープを理解するのに問題があることを理解していますか?中括弧で示されるコードブロックで変数を宣言すると、{この}ブロック内のどこにでも表示および変更できます。

{    
    {
        int b = 1, c = 1, Answer = 0;
        for(int Variable=2; Variable<N; Variable++)
        {
            // The b and c variables are visible here
            // and can be both read and written.

            Answer = b + c;
            b = c;
            c = Answer;
        }
    } 

    // However, they are no longer visible here.
}
于 2013-03-04T12:34:52.750 に答える