我对下面的代码有一点麻烦。我已经计算出每个循环的每个变量的值,我理解每个循环后每个变量的值如何变化,但我对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;
}
}
}
答案 0 :(得分: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
的行为与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
}
答案 1 :(得分: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
......等等。你应该明白这一点:)