方法四:自底向上进行迭代
算法:
- 若 N <= 1,则返回 N。
- 若 N == 2,则返回 fib(2-1) + fib(2-2) = 1。
- 使用迭代的方法,我们至少需要三个变量存储 fib(N), fib(N-1) 和 fib(N-2)。
- 预置初始值:
- current = 0。
- prev1 = 1,代表 fib(N-1)。
- prev2 = 1,代表 fib(N-2)
- 我们从 3 计算到 N;0,1,2对应的斐波那契数是预先计算。
- 设置 current = fib(N-1) + fib(N-2),因为 current 代表的是当前计算的斐波那契数。
- 设置 prev2 = fib(N-1)。
- 设置 prev1 = current。
- 当我们到达 N+1,将退出循环并返回 current。

Java 实现
class Solution {
public int fib(int N) {
if (N <= 1) {
return N;
}
if (N == 2) {
return 1;
}
int current = 0;
int prev1 = 1;
int prev2 = 1;
for (int i = 3; i <= N; i++) {
current = prev1 + prev2;
prev2 = prev1;
prev1 = current;
}
return current;
}
}
Python 实现
class Solution:
def fib(self, N: int) -> int:
if (N <= 1):
return N
if (N == 2):
return 1
current = 0
prev1 = 1
prev2 = 1
# Since range is exclusive and we want to include N, we need to put N+1.
for i in range(3, N+1):
current = prev1 + prev2
prev2 = prev1
prev1 = current
return current