我试图通过定义一个递归函数来递归地找到结果。递归函数在类内部定义。

class Factorial:
    def __init__(self):
        pass

    def getFactorial(self, n):
        # exclude negative numbers
        if n < 0:
            return -1
        # base or terminal case (0! = 1, 1! = 1)
        elif n < 2:
            return 1
        else:
            return n * getFactorial(n - 1)

test = Factorial()
print(test.getFactorial(5))


运行此代码时,出现以下错误:

Traceback (most recent call last):
  File "Factorial.py", line 35, in <module>
    print(test.getFactorial(5))
  File "Factorial.py", line 32, in getFactorial
    return n * getFactorial(n - 1)
NameError: name 'getFactorial' is not defined"


但是,当我使用以下代码而不定义类时,它可以正确地回答:

def getFactorial(n):
    # base or terminal case (0! = 1, 1! = 1)
    if n < 0:
        return -1
    elif n < 2:
        return 1
    else:
        return n * getFactorial(n - 1)

def main():
    output = getFactorial(5)
    print(output)

if __name__ == "__main__":
    main()


如果我要使用该类来解决相同的问题,该如何解决该问题?

最佳答案

由于它是一个实例方法,因此您应该在一个实例上调用它-在这种情况下,是当前实例self

return n * self.getFactorial(n - 1)
# Here ----^

10-06 16:02