python中的Fibonacci序列给出了错误的结果而不是正确的结果

2024-04-16 21:41:44 发布

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

我试图在python中实现Fibonacci序列

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

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

Tags: inselfforreturndefmaxfibonacciend
2条回答

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

你通过了2:你的代码把序列打印到了2。你希望在这个系列中打印两个数字。所以,改变结束条件。你知道吗

停止迭代的条件是错误的。您需要在__init__方法中将self.counter设置为零,然后在__next__方法中递增此计数器,并在该条件下将其与max进行比较。第二种情况是巧合,因为第五个元素是5。你知道吗

相关问题 更多 >