问题描述
斐波那契数列定义为F(n)。其中
F(0) = 0 F(1) = 1
F(N) = F(N - 1) + F(N - 2), for N > 1.
输入输出样例
Input: 2
Output: 1
Explanation: F(2) = F(1) + F(0) = 1 + 0 = 1.
Input: 3
Output: 2
Explanation: F(3) = F(2) + F(1) = 1 + 1 = 2.
递归方法
常规解法是使用递归方法。递归规则就是问题描述的第二行,边界条件就是第一行。使用Python解题代码如下:
def fib(self, N):
# 递归规则
if N>1:
return self.fib(N-2)+self.fib(N-1)
# 边界条件
else:
return N
问题分析:可以看到上面的方法时间效率并不高。分析下上面这个算法的时间复杂度。要计算F(n),需要计算到F(n-1)和F(n-2)。而要