python - 即使在调用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
解决方案
虽然其他答案可能会产生工作代码,但您需要了解您正在尝试做的事情等同于
def recFib(self, firstTerm, secondTerm):
if firstTerm <= 1000:
print(firstTerm)
self.recFib(secondTerm, firstTerm + secondTerm)
return
推荐阅读
- reactjs - 过滤具有多个字符串值的对象
- python - python .index() 和 .find() 之间的时间复杂度差异
- payment-gateway - 不同的提供商支付佣金
- vba - VBA + Pivot:在过滤器更改时运行脚本,但在枢轴启动刷新之前
- c# - 我可以从 ac# 9 记录的自动生成方法中隐藏敏感属性值吗?
- python - 从空格分隔的字符串创建 Pandas DataFrame
- time-complexity - 这些代码的时间和空间复杂度
- azure-devops - 如何在 azure devops 中知道分叉存储库的源存储库?
- php - Composer - 供应商文件夹内的供应商文件夹 - 找不到类
- javascript - 无法更新