Fibonacci序列从点a到点b?

2024-04-24 10:50:56 发布

您现在位置:Python中文网/ 问答频道 /正文

m = 2
n =20
a,b = m,0
fib = [m]
while a <= n:
   fib.append(a)
   a,b = a+b, a

因此,给定从mn (and m < n)的两个变量,我需要创建一个列表,其中包含m和{}之间的Fibonacci序列的所有数字(但不能超过)例如:如果m = 2和{},那么{}应该是{}。在


Tags: and列表序列数字fibonaccifibappendwhile
3条回答
def fib(m,n):
    a,b = 1,1
    while a < m:
        a,b = b, a+b

    answer = [a]
    while b < n:
        a,b = b, a+b
        answer.append(a)
    return answer

In [2040]: fib(2,20)
Out[2040]: [2, 3, 5, 8, 13]

我不知道如何在中途开始fibonnaci序列,所以我能想到的最好的方法是在之后过滤结果。

def f(low, high):
    fib = [0]
    a, b = 1, 0
    while a <= n:
       fib.append(a)
       a,b = a+b, a
    return filter(lambda x: x >= low and x =< high, fib)

fibonacci代码很简单,您可能在这里看到的新东西是filter,它接受一个函数f和一个iterablex,并返回一个新的iterable,其中包含x中的所有元素,这样f(x)为真。

m  = int(raw_input("Enter the start number : "))
n = int(raw_input("Enter the end number : "))
def fib(i):
if i == 0: return 0
elif i == 1: return 1
else: return f(i-1)+f(i-2)
print map(fib, range(m, n))

我希望这就是你需要的。

相关问题 更多 >