python-3.x 如何在类中函数中使用递归(self作为第一个参数)

ncgqoxb0  于 2023-04-08  发布在  Python
关注(0)|答案(1)|浏览(121)

我尝试在Python中使用***递归***来求解斐波那契序列,但所需的解决方案必须采用以下格式:

class Solution:
    def fib(self, n: int) -> int:
    # code here recursively utilizing fib(arg1,arg2)

这是我最好的尝试:

class Solution:
    def fib(self, n: int) -> int:
       if n == 0 :
           return n
       if n == 1 or n==2 : 
           return 1
       return fib(fib,n-1) + fib(fib,n-2)

但这产生了以下运行时错误:

NameError: name 'fib' is not defined
    return fib(fib,n-1) + fib(fib,n-2)
Line 7 in fib (Solution.py)
    ret = Solution().fib(param_1)
Line 33 in _driver (Solution.py)
    _driver()
Line 44 in <module> (Solution.py)

我遇到了这个相关的问题:How to use recursion inside a class function,但我有兴趣找到一个更通用的python指南,以便将来能够在类中使用RECURSION。

lx0bsm1f

lx0bsm1f1#

fib在你的案例中是一个示例方法,请正确使用它:

class Solution:
    def fib(self, n: int) -> int:
        if n == 0:
            return n
        if n <= 2:
            return 1
        return self.fib(n - 1) + self.fib(n - 2)

print(Solution().fib(10))   # 55

相关问题