python递归迭代导数多项式函数

时间:2014-07-28 16:19:08

标签: python class recursion

我正在尝试编写一个类,该类初始化将在不同方法中再次使用的某些参数。然而,当我根据初始值编写一个简单的递归算法时,我总是得到一条错误信息,我真的不知道如何自己解决它。

以下是算法的样子:

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 ()的值作为我方法的输入。

无论如何,你的帮助真的很受欢迎。

1 个答案:

答案 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