我正在尝试在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
答案 0 :(得分:1)
您停止迭代的条件是错误的。您需要在self.counter
方法中将__init__
设置为零,然后在__next__
方法中将该计数器递增,并在条件与最大值进行比较的情况下。第二种情况是巧合的,因为第五项是5。
答案 1 :(得分:0)
在此结束条件if fib > self.max:
中,您要检查序列中的最后一个数字。您应该检查序列中的数字count
以匹配预期结果。
您通过了2:您的代码将系列打印到2。您希望在系列中打印两个数字。因此,更改结束条件。