斐波那契数列有两种方法,第一种是递归(空间损耗过大,而且比较慢),第二种是“暴力”求解,然后利用字典存储,方便查询。
一、题目
二、代码
这里只展示第二种方法。
class Solution(object):
def __init__(self):
# 初始化一个字典来存储已经计算过的斐波那契数
self.memo = {}
def Fibonacci(self, n):
"""
:type n: int
:rtype: int
"""
# 检查是否已经在字典中计算过这个结果
if n in self.memo:
return self.memo[n]
# 递归的基本情况
if n == 0:
result = 0
elif n == 1:
result = 1
else:
# 递归调用,但这次使用记忆化
result = self.Fibonacci(n-1) + self.Fibonacci(n-2)
# 将结果存储在字典中以便将来使用
self.memo[n] = result
return result