面试题10- I. 斐波那契数列

写一个函数,输入 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)

发布了88 篇原创文章 · 获赞 31 · 访问量 5081

猜你喜欢

转载自blog.csdn.net/weixin_43455338/article/details/104720821