Python 2.7 使用python查找特定范围内的斐波那契数
我试图用python编写一个函数,返回特定范围内所有斐波那契数的列表,但我的代码不起作用,它只返回[0]。有什么问题Python 2.7 使用python查找特定范围内的斐波那契数,python-2.7,fibonacci,Python 2.7,Fibonacci,我试图用python编写一个函数,返回特定范围内所有斐波那契数的列表,但我的代码不起作用,它只返回[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):
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
从数学导入sqrt
def F(n):
返回int(((1+sqrt(5))**n-(1-sqrt(5))**n)/(2**n*sqrt(5)))
def法兰(x):
A=[0]
当最大值(A)
将H=1
设置为while
循环中的第一条语句;因此,每次输入for
循环,H=1
时,只会得到n=0
的斐波那契数
您需要在循环之外设置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
def Frange(x):
A=[0]
H=1
当最大值(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
从数学导入sqrt
def F(n):
返回int(((1+sqrt(5))**n-(1-sqrt(5))**n)/(2**n*sqrt(5)))
def法兰2(x):
A=[0]
H=1
当最大值(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
此函数将计算出的斐波那契数存储在列表中,然后将其用作“缓存”数进行进一步计算
希望有帮助 请描述失败的方式,即任何错误或不正确的结果。@PeterHerdenborg我已经做了,有什么建议吗?非常感谢,我是编程新手,为什么我没有看到?每个答案旁边都有一个“接受”按钮。当您的问题得到回答时,您单击以显示这是有帮助的。