![](/img/trans.png)
[英]Writing an n choose k function using recursion: returning the value and number of recursive calls made as a tuple
[英]Defining a recursive function calculate(a) that returns the value of the calculation and number of recusive calls as a tuple
我要定义一个名为calculate(a)
的递归 function ,它采用非负 integer 作为参数并返回一个元组,该元组具有计算值和递归调用次数。
该系列是 - 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
这就是 function 应该如何运行:
>>>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
给出2.5
,因为在递归期间调用calculate(1)
时n is 0.5
。
顺便说一下,对于a == 2
该系列的计算结果是1.1667
而不是1.667
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.