剑指offer JZ7:斐波那契数列

剑指offer JZ7:斐波那契数列

问题

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n<=39

思路

斐波那契数列在算法中是经典的动态规划问题,只要给定前两个元素dp[0],dp[1],之后的所有元素都可以用前两个元素相加得到即可。唯一需要注意的是,由于这里是从第0项开始的,所以当初始化dp列表时,其长度是n+1

代码及解释

class Solution:
    def Fibonacci(self, n):
        # write code here
        if n == 0:
            return 0
        if n == 1:
            return 1
        dp = [0]*(n+1)
        #只有这里需要注意一下长度为n+1
        dp[0] = 0
        dp[1] = 1
        for i in range(2, n+1):#最后一项为n
            dp[i] = dp[i-1] + dp[i-2]
        return dp[n]

你可能感兴趣的:(剑指offer)