我试图通过定义一个递归函数来递归地找到结果。递归函数在类内部定义。
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 ----^