定义一个递归函数calcule(a),该函数将计算值和回避调用数作为元组返回



我要定义一个名为calculate(a)的递归函数,该函数以一个非负整数为参数,并返回一个元组,该元组具有计算值和递归调用次数。

该系列是-1/2 + 2/3 + 3/4 ... n/n+1

这就是我目前所拥有的:

def calculate(a):
res = 0
if a <= 1:
return 0.5,0

n, count = calculate(a-1)

return  a/a+1 + n, count + 1

这就是函数应该如何运行:

>>>res1 = calculate(1)
(0.5,0) #expected
(0.5, 0)#got
>>>res2 = calculate(2)
(1.667, 1)#expected
(2.5,1)#got
>>> res3 = calculate(7)
(5.2821, 6)#expected
(12.5,6)#got

您在return语句中忘记了a/(a+n)中的括号。

如果您不知道python根据PEMDAS遵循运算符优先级。当a=1a/a+n的计算结果为(a/a) + n1 + n时,您忘记了方括号,当递归过程中调用calculate(1)时,2.5将为n is 0.5

并且对于CCD_ 11,级数的求值为CCD_ 12而不是CCD_ 13。

最新更新