2 回答

TA贡献2016条经验 获得超9个赞
a并且最初b等于 1 ,因此在循环的第一次迭代中,该语句什么也不做。但是让我们看看在以后的迭代中会发生什么:
Initial state:
a = 1
b = 1
c = 0
Iteration 1:
c = 1 + 1 = 2
b = a = 1
a = c = 2
Iteration 2:
c = 1 + 2 = 3
b = a = 2
a = c = 3
Iteration 3:
c = 2 + 3 = 5
b = a = 3
a = c = 5
本质上,a存储序列中的前一个数字,而b存储倒数第二个。由于序列的前 2 个数字是1, 1,b将在两次迭代中保持为 1,但稍后会更改。

TA贡献1842条经验 获得超21个赞
Fn = Fn-1 + Fn-2,即从a = 1and开始b = 1,您必须计算下一个斐波那契数并将 and 移动a到b右边的一个位置。
public static long fibonacci(int n) {
n = Math.abs(n);
if (n == 0)
return 0;
if (n < 3)
return 1;
long a = 1;
long b = 1;
long c = 0;
for (int i = 3; i <= n; i++) {
c = a + b;
b = a;
a = c;
}
return c;
}
没有找到匹配的内容?试试慕课网站内搜索吧
添加回答
举报