【发布时间】:2019-08-20 13:29:34
【问题描述】:
我创建了一个基本的 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
【问题讨论】:
-
你没有基本情况,你总是调用 recFib(0,1)
-
第一项永远不会增加
-
就像我之前提到的,我尝试将它放在“if Fterm > 1000: return”之前,但没有成功
-
我认为您不清楚参数如何传递给函数。阅读按值传递与按引用传递。你用 Fterm 和 Sterm 做的所有杂技都是没有意义的。
-
在 python 中搜索一个基本的斐波那契函数,并在将其传递给类方法之前将其实现。