-
# while
def Fibonacci1(num): a,b=0,1 while a<num: print(a) a,b=b,a+b # print(Fibonacci1(20))
-
# yield
def Fibonacci2(num): a,y,b=0,1,1 while a<num: yield y y,b=b,y+b a=a+1 res=Fibonacci2(10) fbn=[i for i in res] # print(fbn) # [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
-
for
def Fibonacci3(n): a,b=0,1 for i in range(n): a,b=b,a+b print(a) # print(Fibonacci3(10))
# 上述的递归在时间复杂度上面,效率较慢,不推荐
# 矩阵法 时间复杂度O(log n)
import numpy
def fib_matr(n):
return (numpy.matrix([[1, 1], [1, 0]]) ** (n - 1) * numpy.matrix([[1], [0]]))[0, 0]
for i in range(20):
print(int(fib_matr(i)), end=" ")
# 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
来源:CSDN
作者:小弧y
链接:https://blog.csdn.net/weixin_38128649/article/details/104008152