python 斐波那契数列实现方法

南楼画角 提交于 2020-01-16 20:04:42
  1. 
    # while
    def Fibonacci1(num):
        a,b=0,1
        while a<num:
            print(a)
            a,b=b,a+b
    # print(Fibonacci1(20))

     

  2. # 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]

     

  3. 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

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!