没有值返回斐波那契数列

问题描述 投票:0回答:1

我完全困惑为什么我的代码不返回任何值。我是新手,已经搜寻了一段时间,但我仍然迷路。

class Fibonacci:

    def __init__(self, max = 0):
        self.max = max

    def __iter__(self):
        self.n = 0
        return self

    def __next__(self):
        if self.n <= self.max: # if n is less that 0
            def FIB(number):
                if number == 1 or number == 2:
                    return 1
                else:
                    return FIB(number - 1) + FIB(number - 2)
            self.n += 1
        else:
            raise StopIteration
python oop fibonacci
1个回答
0
投票

您的实现每次调用__next__时花费的时间越来越多。应该使用迭代方法,而迭代的复杂性始终不变:

class Fibonacci:

    def __init__(self, max = 0):
        self.max = max
        self.a = 0
        self.b = 1

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

    def __next__(self):
        self.a, self.b = self.b, self.a + self.b
        if self.a <= self.max: # if n is less that 0
            return self.a
        else:
            raise StopIteration
© www.soinside.com 2019 - 2024. All rights reserved.