首页 > 解决方案 > 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 中。

标签: pythonooprecursionfibonacci

解决方案


推荐阅读