我要定义一个名为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=1
、a/a+n
的计算结果为(a/a) + n
或1 + n
时,您忘记了方括号,当递归过程中调用calculate(1)
时,2.5
将为n is 0.5
。
并且对于CCD_ 11,级数的求值为CCD_ 12而不是CCD_ 13。