Python中的斐波那契序列(最有效)

时间:2019-02-26 10:10:57

标签: python python-3.x

请问有人知道用Python显示斐波那契数列中前100个数字的最有效方法吗?

这是我当前的代码:

fib1,fib2,fib3= 0,0,1  

while fib3< 100: 
    print(fib3) 
    fib1=fib2 
    fib2=fib3
    fib3=fib1 + fib2

2 个答案:

答案 0 :(得分:1)

from math import sqrt
def F(n):
    return ((1+sqrt(5))**n-(1-sqrt(5))**n)/(2**n*sqrt(5))

根据斐波那契公式,这是一种获取斐波那契序列第n个成员的方法。

此函数既不使用循环也不使用递归(由于Python如何处理递归,因此递归在Python中非常糟糕,由于迭代方式,它们总是比迭代解决方案慢,请参见fiddle

答案 1 :(得分:1)

了解python和fibonacci序列的工作原理。使用python的generator功能。遵循代码

a = int(input('Give num: '))

def fib(n):
    a, b = 0, 1
    for _ in range(n):
        yield a
        a, b = b, a + b

print(list(fib(a)))