为什么在递归情况下会出现“函数未定义”错误?

jas*_*son 5 python recursion reverse function python-3.x

我想解决一个倒数问题

这是我的递归函数,为什么Python3抱怨我的函数未定义?有什么想法吗?

class Solution:
    def reverse(self, x: int) -> int:
        if x < 0:
            return -1 * reverse(self, x)
        if x // 10 == 0:
            return x
        if x % 10 == 0:
            return reverse(self, x // 10)
        else:
            return (x % 10) * 10 ** (len(str(x//10))) + reverse(self, x // 10)
Run Code Online (Sandbox Code Playgroud)

我只是遵循传统的递归函数。

Sha*_*ger 6

方法需要通过self;递归调用 类/实例的作用域只能通过self(或类名本身)显式访问,不能通过嵌套作用域隐式访问。更改reverse(self, ...)to的所有用法self.reverse(...),它就会起作用。

可以这样做Solution.reverse(self, ...),但这不必要地一遍又一遍地重复类名,而且self.reverse无论如何它都会比直接调用慢。