在Python中使用类和函数使用递归查找结果时出现问题

在Python中使用类和函数使用递归查找结果时出现问题,python,recursion,Python,Recursion,我试图通过定义一个递归函数来递归地找到结果。递归函数是在类内部定义的 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)

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

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))
类阶乘:
定义初始化(自):
通过
def getFactorial(self,n):
#排除负数
如果n<0:
返回-1
#基本或端子箱(0!=1,1!=1)
elif n<2:
返回1
其他:
返回n*getFactorial(n-1)
测试=阶乘()
打印(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"
回溯(最近一次呼叫最后一次):
文件“Factorial.py”,第35行,在
打印(test.getFactorial(5))
getFactorial中第32行的文件“Factorial.py”
返回n*getFactorial(n-1)
NameError:未定义名称“getFactorial”
但是,当我使用下面的代码而不定义类时,它会与正确的答案完美结合:

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()
def getFactorial(n):
#基本或端子箱(0!=1,1!=1)
如果n<0:
返回-1
elif n<2:
返回1
其他:
返回n*getFactorial(n-1)
def main():
输出=getFactorial(5)
打印(输出)
如果名称=“\uuuuu main\uuuuuuuu”:
main()

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

由于它是一个实例方法,您应该在实例上调用它—在本例中,是当前实例,
self

返回n*self.getFactorial(n-1)
#这里----^

use
self.getFactorial(n-1)
Wow,这很有效!!!我真的很感激。你介意解释一下为什么我需要在这里添加
self
。看看你在不了解基础知识的情况下编写代码做什么吗?请阅读Python对象和各种方法作用域。你的答案令人困惑。它不是类方法,而是实例方法。类方法应该不是o可以用类名而不是实例调用。在类方法上使用实例将通过代码检查器生成警告。