繁体   English   中英

定义递归 function 计算(a),将计算值和递归调用数作为元组返回

[英]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) + n1 + n给出2.5 ,因为在递归期间调用calculate(1)n is 0.5

顺便说一下,对于a == 2该系列的计算结果是1.1667而不是1.667

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM