python中的斐波那契序列给出错误的结果而不是正确的结果

时间:2018-09-23 02:39:19

标签: python

我正在尝试在python中实现斐波那契序列

我得到了错误的结果,而不是正确的结果。正确的显示

class FibonacciIterator:
    def __init__(self, max):
        self.max = max

    def __iter__(self):
        self.a = 1
        self.b = 1
        return self

    def __next__(self):
        fib = self.a
        if fib > self.max:
            raise StopIteration
        self.a, self.b = self.b, self.a + self.b
        return fib

fib_ = FibonacciIterator(2)
for term in fib_:
    print(term,end=" ")

输出:

Expected: 1 1
Got: 1 1 2

fib_nums = FibonacciIterator(5)
for term in fib_nums:
    print(term,end=" ")

输出:

Expected: 1 1 2 3 5
Got : 1 1 2 3 5

2 个答案:

答案 0 :(得分:1)

您停止迭代的条件是错误的。您需要在self.counter方法中将__init__设置为零,然后在__next__方法中将该计数器递增,并在条件与最大值进行比较的情况下。第二种情况是巧合的,因为第五项是5。

答案 1 :(得分:0)

在此结束条件if fib > self.max:中,您要检查序列中的最后一个数字。您应该检查序列中的数字count以匹配预期结果。

您通过了2:您的代码将系列打印到2。您希望在系列中打印两个数字。因此,更改结束条件。