题目描述
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。
n<=39
解题思路
- 递归调用
F(1) = 1,F(2) = 1,F(n) = F(n-1)+F(n-2) (n>2) 可能会超时
# -*- coding:utf-8 -*-
class Solution:
def Fibonacci(self, n):
# write code here
if n == 0:
return 0
elif n == 1 or n == 2:
return 1
else:
return self.Fibonacci(n-1) + self.Fibonacci(n-2)
- 利用辅助的结果列表ans,计算过的n和Fibonacci(n)对储存在里面,避免重复计算
# -*- coding:utf-8 -*-
class Solution:
def Fibonacci(self, n):
# write code here
ans = {0:0, 1:1}
def helper(n):
if n in ans.keys():
return ans[n]
ans[n] = helper(n-1) + helper(n-2)
return ans[n]
return helper(n)
- 利用循环辅助列表对该数列进行存储
# -*- coding:utf-8 -*-
class Solution:
def Fibonacci(self, n):
# write code here
ans = [0, 1, 1, 2]
while len(ans) <= n:
ans.append(ans[-1]+ans[-2])
return ans[n]