#1. 什么是斐波那契
斐波那契数列:1, 1, 2, 3, 5, 8, 13, 21, 34, …在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)
下面写函数计算第n个数
#2. 递归方法-效率低
用递归,是爆炸增量函数,效率超级低,算第100个数,等好久基本算不出来,写程序要避免使用递归
def f1(n):
if n < 1:
return -1
elif n == 1 or n == 2:
return 1
else:
return f1(n - 1) + f1(n - 2)
#3. 算法改进-使用数组
使用数组存放前面计算好的值,效率明显提高,空间复杂度就是O(n)
def f2(n):
arr = [0 for x in range(n)]
arr[0] = 1
arr[1] = 1
i = 2
while i < n:
arr[i] = arr[i - 1] + arr[i - 2]
i += 1
return arr[n - 1]
#4. 算法改进-使用迭代法
这个改进后空间复杂度为O(1),哈哈还是比较好的
def f3(n):
s1 = 1
s2 = 1
result = 1
i = 3
while i <= n:
result = s1 + s2
s1 = s2
s2 = result
i += 1
return result