我正在尝试编写一个类,该类初始化将在不同方法中再次使用的某些参数。然而,当我根据初始值编写一个简单的递归算法时,我总是得到一条错误信息,我真的不知道如何自己解决它。
以下是算法的样子:
def normal_recursion(poly):
if len(poly) == 1:
return poly[0]
else:
return poly[0] + normal_recursion(poly[1:])
>>> print(normal_recursion([1,2,3]))
>>> 6
这正是应该出来的。
现在我的班级看起来像:
class Ps2(object):
def __init__(self, poly):
self.poly = poly
def testFunction(self):
'''Computes the sum of the elements of an indexable object.'''
if len(self.poly) == 1:
return self.poly[0]
else:
return self.poly[0] + self.testFunction(self.poly[1:])
如果:
test = Ps2([1,2,3])
和
test.testFunction()
然后:
TypeError: testFunction() takes 1 positional argument but 2 were given
我尝试了各种各样的'def testFunction(self):'像'def testFunction(self,self.poly)',但是没有成功。
但是,Stackoverflow上有一个相关的问题:Python Recursion within Class我应该提到这个算法有效。
我的问题的不同之处在于我想使用def init ()的值作为我方法的输入。
无论如何,你的帮助真的很受欢迎。
答案 0 :(得分:2)
def testFunction(self,poly = None):
'''Computes the sum of the elements of an indexable object.'''
poly = self.poly if poly is None else poly
if len(poly) == 1:
return poly[0]
else:
return poly[0] + self.testFunction(poly[1:]) #since you send it an argument here you must have a argument in the function declaration