例如,如果我想在任意数量的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.请帮助。
答案 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