一个类中的递归除法

时间:2014-02-06 15:49:28

标签: python oop loops recursion

我正在尝试练习OOP和递归,但我遇到了一些麻烦。我认为它的递归方面是正确的,但我构建类的方式是错误的。

它应该如何运作:
它应该从6中减去1,直到x = 0.每次加1到索引。当x等于0时,函数应该返回索引。

我出错的地方:
下面的代码说我有一个错误,因为除非我提供了两个,否则接受三个争论。但我认为自我并不是一个真正的争论。这只是必须在课堂上完成的事情。

如何使下面的代码按预期工作?

class Division(object):

    def __init__(self, x, y):
        self.index = 0
        self.x = x
        self.y = y

    def divide(self, x, y):
        self.index += 1
        if self.x <= 0:
            return self.index
        return divide(self.x-self.y, self.y)

print(Division.divide(6,1))

编辑(修订后的代码):
现在我得到一个没有定义鸿沟的错误?

class Division(object):

    def __init__(self):
        self.index = 0

    def divide(self, x, y):
        self.index += 1
        if x <= 0:
            return self.index
        return divide(x-y, y)

print(Division().divide(6,1))

第二次修改: 我想我明白了。我不得不在divide方法递归返回上再次添加创建Division的实例。我的输出错了。它说self.index等于1。可能是因为当我创建类的新实例时,索引设置为0.我如何克服这个问题?

最终代码:

class Division(object):

        def __init__(self):
            self.index = 0

        def divide(self, x, y):
            self.index += 1
            if x <= y:
                return self.index
            return self.divide(x-y, y)

print(Division().divide(6,1))

1 个答案:

答案 0 :(得分:0)

我不明白为什么你想在这里拥有一个物品......它的模型是什么?所以这是一个没有对象的解决方案

def divide(a, b, q = 0):
    if a < b:
        return q
    return divide(a-b, b, q+1)