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