题目描述
输入一个整数 n ,求斐波那契数列的第 n 项。
假定从0开始,第0项为0。(n<=39)
样例
输入整数 n=5
返回 5
思路
F(n) = F(n-1)+F(n-2) n>2
若采用直接递归,则会超出运行时间。优化方法:记住已有的结果(缓存)来优化程序性能。
代码实现(Python)
class Solution(object):
def __init__(self):
self.__result = [-1]*40
def Fibonacci(self, n):
"""
:type n: int
:rtype: int
"""
if n == 0:
self.__result[n] = 0
elif n <= 2:
self.__result[n] = 1
else:
# 递归调用过程中,若已有计算结果则直接返回已有结果,避免重复计算
if self.__result[n] > 0:
return self.__result[n]
self.__result[n] = self.Fibonacci(n-1) + self.Fibonacci(n-2)
return self.__result[n]