分别用递归和动态规划求解
递归:
C++写的才能满足题目要求,python写的会超出时间限制
class Solution { public: int Fibonacci(int n) { //递归解法 if(n <= 0) return 0; if(n == 1 || n == 2) return 1; return Fibonacci(n-1)+Fibonacci(n-2); } };
动态规划方式:
根据斐波拉契数列的关系便可找到规律,进而完成代码编写,即:F(0) = 0, F(1) = 1,F(N) = F(N-1) + F(N -2)
# -*- coding:utf-8 -*- class Solution: def Fibonacci(self, n): # write code here #动态规划法 mylist = [0,1] if n <= 0: return mylist[0] if n == 1: return mylist[1] for i in range(2,n+1): mylist.append(mylist[i - 1] + mylist[i - 2]) return mylist[n] #递归,运行超时 #if n <= 0: # return 0 # if n == 1 or n == 2: # return 1 # return self.Fibonacci(n-1) + self.Fibonacci(n-2)