你将如何使用递归来查找两个以上参数的结果

时间:2018-02-03 21:03:21

标签: python python-3.x recursion

例如,如果我想在任意数量的x,y和z中递归地找到xy-z的结果,则需要x个时间量。因此,假设x = 5,y = 6和z = 7,当i = 1时,结果将是1(6)-7,而在第二次调用时,我将是2,因此这将是2(6)-7会持续到我们达到5(x的值)。我知道如何迭代地执行此操作并且它可以正常工作。

    def formul(x,y,z):
        result=0
        for i in range(1,x+1):
            result+= i*y-z
        return result

到目前为止,我有这个递归不起作用:

    def underattack1(n,x,y):
        if n==0:
            return 0
        else:
            return n*x-y-underattack1(n-1,x,y)

我在考虑为结果添加另一个参数,但不确定如何处理它。如果我使用3,3,4与迭代方法我得到6我期望,但如果我递归使用相同的值我得到2.请帮助。

1 个答案:

答案 0 :(得分:0)

在迭代函数中,您将添加结果。但是在你的递归函数中你会减去它。这就是递归函数的问题。

>>> def underattack1(x, y, z):
        return 0 if x == 0 else x*y-z + underattack1(x-1, y, z)

>>> underattack1(3, 3, 4)
6