算法设计与分析— 斐波那契数列

题目描述:

** 斐波那契数列**

示例 :
写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(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级台阶,也可以跳上2级台阶。
求该青蛙跳上一个 n 级的台阶总共有多少种跳法。

来源:力扣(LeetCode)


算法实现:

解题思路
动态规划
因为每一次计算都会用到上次计算的数据,所以可以采用动态规划的思想,利用上每一次计算的数据求出下一次的结果
请添加图片描述

def fib(self, n):
    """
    :type n: int
    :rtype: int
    """
    ## 动态规划
    MOD=10**9 +7
    if n<2:
        return n
    q,r=0,1
    for i in range(1,n):
        q,r=r,(q+r)%MOD
    return r

Guess you like

Origin blog.csdn.net/qq_39740279/article/details/120684582