使用 python 查找特定范围内的斐波那契数

Finding the fibonacci numbers in a certain range using python

我正在尝试在 python 中编写一个函数,其中 returns 是特定范围内所有斐波那契数列的列表,但我的代码无法简单地工作 returns [0] .有什么问题?

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


def Frange(x):
    A = [0]
    while max(A) < x:
        H = 1
        for i in range(H):
            A.append(F(i))
        H = H+1
    return A

您将 H = 1 设置为 while 循环中的第一条语句;所以每次你进入 for 循环时,H = 1 你只会得到 n=0

的斐波那契数

您需要在 while 循环之外设置 H = 1

def Frange(x):
    A = [0]
    H = 1
    while max(A) < x:

        for i in range(H):
            A.append(F(i))
        H = H+1
    return A

您可以通过在循环内打印各种值来轻松解决此问题,例如 print H.

我又发现了一个错误,改进后的代码是:

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

    def Frange2(x):
        A = [0]
        H = 1
        while max(A) < x:
            if F(H) < x:
                A.append(F(H))
            else:
                break
            H = H+1
        return A

计算范围内斐波那契数列的最快、最流行且最简单的解决方案是

def fib3(n): #FASTEST YET
    fibs= [0,1] #list from bottom up
    for i in range(2, n+1):
        fibs.append(fibs[-1]+fibs[-2])
    return fibs

此函数将计算出的斐波那契数存储在一个列表中,稍后将它们用作 'cached' 数以进行进一步计算。

希望对您有所帮助!