C++
递归的方法超时了,这里使用动态规划的思想。不断替换a,b的值,而不是每次递归执行两次函数
class Solution {
public:
int fib(int n) {
if (n == 0) return 0;
if (n == 1 || n == 2) return 1;
int a = 1, b = 1, sum = 0;
for (int i = 3; i <= n; i++) {
sum = (a + b) % 1000000007;
a = b;
b = sum;
}
return sum;
}
};
Python
class Solution:
def fib(self, n: int) -> int:
a, b = 0, 1
for _ in range(n):
a, b = b, a+b #python独特的数值交换方式
return a%1000000007 #此时a对应f(n)