使用 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' 数以进行进一步计算。
希望对您有所帮助!
我正在尝试在 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' 数以进行进一步计算。
希望对您有所帮助!