写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:
F(0) = 0, F(1) = 1
F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。
答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。
思路1:递归(效率低,leetcode超时)
class Solution:
def fib(self, n: int) -> int:
if n <= 0:
return 0
if n == 1:
return 1
return self.fib(n-1) + self.fib(n-2)
思路2:动态规划,从下往上计算,首先根据f(0),f(1)计算出f(2),以此类推。
def fib(self, n: int) -> int:
a, b = 0, 1
for _ in range(n):
a,b = b, a+b
return a % 1000000007
来源:力扣(LeetCode)