朴素的斐波那契数列时间复杂度是指数级的,会有大量重复运算。
本文算法时间复杂度是线性的
假设斐波那契数列从0开始,也就是:0,1,1,2,3……
def fib(fib1, fib2, n):
#注意,规定了传参fib1,fib2分别为0和1
if n == 0:
return fib1
elif n == 1:
return fib2
else:
return fib(fib2, fib1+fib2, n-1)
def test():
for i in range(40):
print(fib(0,1,i), end=" ")
test()
运行结果
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 6324598