python - python递归oop与功能
问题描述
我很好奇为什么第一个功能确实有效(OOP),但第二个触发和错误。有人可以解释吗?
class Solution(object):
def __init__(self):
self.solved = {0:0,1:1,2:1}
def fibonacci(self, n):
"""
:type n: int
:rtype: int
"""
if n in self.solved.keys():
return self.solved[n]
else:
value = self.fibonacci(n-1) + self.fibonacci(n-2)
self.solved[n] = value
return value
t = Solution()
t.fibonacci(7)
>>> 13
但这不起作用
found = {0:0,1:1,2:1}
def fibonacci(n):
if n in found.keys():
return found[n]
else:
value = fibonacci(n-1) + fibonacci(n-2)
found[n] = value
return value
fibonacci(7)
>>>TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
编辑:仅在 Google Colab 上执行时发现错误,而不是在本地 python IDE 中。
解决方案
推荐阅读
- linux - 如何按日期对文件进行排序并保存已排序的文件(用于转换附加图像)?
- fortran - 如何在每个时间步将大型数组(一维或二维)写入 hdf5 文件以在 Fortran 中进行模拟
- android-studio - 当我关闭我的活动时,如何清除 android viewholder 缓存(图像重复)
- python - 如何在 YAML 中为 python cerberus 验证器库定义强制函数
- html - 带有包裹背景颜色的多行
- java - 索引页面不起作用,但 api 适用于 AWS beanstalk Sprint Boot
- c++ - 如何在 C++11 中使用 tinyutf8 在另一个 utf8_string 中找到 utf8_string?
- android - Kotlin 扩展视图绑定:“重载分辨率歧义..”自定义按钮上的编辑器错误
- dart - 如何制作水槽
格式化 Stream 的结果 ? - node.js - Heroku Node 应用程序在将文件上传到 S3 时崩溃(消息:'标题内容包含无效字符')