斐波那契数列几种实现算法
# 1. 递归实现:
def fib(n):
if n < 3:
return 1
return (fib(n-1)+ fib(n-2))
print(fib(10))
# 时间复杂度O(2^n)
# 空间复杂度 O(n)
# 空间复杂度:包括 1、变量 2、stack (递归)上下文切换
# 2. 动态规划算法 先定义一个列表,将算好的放入列表,避免重复计算
import numpy as np
def fib(n):
tmp = np.zeros(n)
tmp[0] = 1
tmp[1] = 1
for i in range(2,n):
tmp[i] = tmp[i-1] +tmp[i-2]
return tmp[n-1]
print(fib(4))
# 时间复杂度: O(n)
# 空间复杂度: O(n)
# 减少空间复杂度,只保存所求数值的前两个数值
def fib(n):
a,b = 1, 1
c = 0
for i in range(2,n):
c = a + b
a = b
b = c
return c
print(fib(5))
# 时间复杂度:O(n)
# 空间复杂度:O(1)