为什么这段代码不会产生小于设定值的斐波纳契数。
from math import sqrt
def Fib(n):
return round(((1+sqrt(5))**n-(1-sqrt(5))**n)/(2**n*sqrt(5)))
def Fiblessthan(m):
total = [0]
count = 1
while max(total) < m:
total.append(Fib(count))
count = count + 1
例如,我不能打印所有小于4000000的斐波那契数字。这是解决这个问题的正确方法。
答案 0 :(得分:1)
from math import sqrt
def Fib(n):
return round(((1+sqrt(5))**n-(1-sqrt(5))**n)/(2**n*sqrt(5)))
def Fiblessthan(m):
total = [0]
count = 1
while total[-1] < m:
total.append(Fib(count))
count = count + 1
return total
你必须检查总长度是否小于m。