首页 > 解决方案 > 即使在调用return时递归函数也无限运行

问题描述

我创建了一个基本的 Python 函数来递归打印斐波那契数。但是,在打印完所有数字后,它会继续无限打印 0

我尝试使用 return 关键字并在之前放置一个 if 语句来检查变量是否比它应该的大,但它仍然没有工作

class RecFibonnacci:

    def recFib(self, firstTerm, secondTerm):
        Fterm = firstTerm
        Sterm = secondTerm

        if Fterm <= 1000:
            print(Fterm)
            tempStrg = Fterm
            Sterm += Fterm
            Fterm = tempStrg
            self.recFib(Fterm, Sterm)
        return

if __name__ == '__main__':
    recFibonacci = RecFibonnacci()
    recFibonacci.recFib(0, 1)

它应该打印从 1 到 987 的所有斐波那契数。它打印它们,但之后,它永远打印 0

标签: pythonrecursion

解决方案


虽然其他答案可能会产生工作代码,但您需要了解您正在尝试做的事情等同于

def recFib(self, firstTerm, secondTerm):
    if firstTerm <= 1000:
        print(firstTerm)
        self.recFib(secondTerm, firstTerm + secondTerm)
    return

推荐阅读