0

以下のコードを理解するのに少し問題があります。各ループの各変数の値を計算し、各ループの後に各変数の値がどのように変化するかを理解しましたが、int a=b;について混乱しています。前の2つの値の合計を表します。私は長い間この問題に悩まされ、試行錯誤によってのみ問題を解決しました。

私は本当にinta=bを理解していません。前の2つの値の合計を表します。int c = a + b;なので、私は確信していました。プログラムで出力したい変数である変数aと変数bの両方を合計します。int aが前の2つの値の合計を表す方法と、intcが表さない理由を説明できますか。

public class Fibonacci extends ConsoleProgram{
   public void run(){
   int i = 0; 
   int a = 0;
   int b = 1; 

   while ( i <= 12) {

     println(a);
     i++;
     int c = a + b; 
     a = b; 
     b = c; 
      }
    }
  }
4

2 に答える 2

5

私はそれを階段と考えるのが好きです:

    0
0 + 1 = 1
    1 + 1 = 2
        1 + 2 = 3
            2 + 3 = 5
                3 + 5 = 8
                    5 + 8 = 13

任意のステップは次のようになります。

a + b = c
    b + c = d

1つのステップの後、のcようbに動作し、のようにb動作しaます。しかし、どうaですかd?ソリューションは反復的であるため、次のようにaなりd、ループでプロセスを繰り返します。

a + b = c
|   b + c = a
|___________|

またはコードで:

int a = 0;
int b = 1;
int c = 0;

while (true) {
    c = a + b;  // `a + b = c` isn't valid, so you have to flip it around.
    a = b;      // `b` "becomes" `a`
    b = c;      // `c` "becomes" `b`
    c = a;      //  You don't need this step because `c` is just a temp variable
}
于 2013-02-10T01:54:57.877 に答える
4

したがって、このプログラムで何が起こるかは次のとおりです。

a = 0、b = 1

cはそれらの合計に設定されます=1

aはb、=1に設定されます

bはc、=1に設定されます

a = 1、b = 1

cはそれらの合計に設定されます=2

aはb、=1に設定されます

bはc、=2に設定されます

a = 1、b = 2

cはそれらの合計に設定されます=3

aはb、=2に設定されます

bはc、=3に設定されます

a = 2、b = 3

cはそれらの合計に設定されます=5

aはb、=3に設定されます

bはc、=5に設定されます

a = 3、b = 5

... 等々。あなたはアイデアを得る必要があります:)

于 2013-02-10T01:31:25.033 に答える