【发布时间】:2018-07-10 20:50:28
【问题描述】:
我正在尝试创建一个函数,该函数接受输入“n”并提供小于或等于“n”的最高斐波那契数的输出。例如,如果 n = 5,则输出为 5。如果 n = 6,则输出为 5。
我的解决方案是可行的,但它似乎并不“有效”,我正在寻找一种替代方法。这是我所做的:
def fib(n):
if n<0:
print("Invalid input")
x , y = 0 , 1
while x <= n:
x , y = y , y + x
return abs(x-y)
我不认为使用 abs(x-y) 似乎很有效,所以我想问一下是否有人有不同的方法来解决这个问题。谢谢。
【问题讨论】:
-
你为什么觉得
abs(x-y)效率不高? -
你很难找到比
abs更有效的非平凡函数。 -
@ArdaArslan:我们正在寻找斐波那契数,而不是素数。
-
@ArdaArslan 谁说过素数?
-
既然
y总是大于x,那么完全不使用abs会更有效。
标签: python python-3.x fibonacci