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 < :
return -
elif n == or n == :
return
else:
return f1(n - ) + f1(n - )
3. 算法改进-使用数组
使用数组存放前面计算好的值,效率明显提高,空间复杂度就是O(n)
def f2(n):
arr = [ for x in range(n)]
arr[] =
arr[] =
i =
while i < n:
arr[i] = arr[i - ] + arr[i - ]
i +=
return arr[n - ]
4. 算法改进-使用迭代法
这个改进后空间复杂度为O(1),哈哈还是比较好的
def f3(n):
s1 =
s2 =
result =
i =
while i <= n:
result = s1 + s2
s1 = s2
s2 = result
i +=
return result