0

我对下面的代码有点难以理解。我已经计算出每个循环的每个变量的值,并且我了解每个变量的值在每次循环后如何变化,但我对 int a = b; 的变化方式感到困惑。表示前两个值的总和。我被这个问题困扰了很长时间,只有通过反复试验才能解决问题。

我真的不明白 int a = b; 表示前两个值的总和。我确信,因为 int c = a + b; 对变量 a 和变量 b 求和,这是我想在程序中打印的变量。你能解释一下 int a 如何表示前两个值的总和,以及为什么 int c 不表示。

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

一步之后,c又像又像。但是和呢?由于您的解决方案是迭代的,您只需说成为并在循环中再次重复该过程:bbaadad

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 回答