运行时分析 - 递归函数示例

时间:2017-01-24 19:20:14

标签: python recursion runtime analysis

我必须检查此功能的运行时间。我知道答案是j-i,但我不明白为什么。

假设j> = i

def  my_sum(i,j):
    if i == j:
        return i
    mid = (i + j)//2
    return my_sum(i, mid) + my_sum(mid + 1, j)

有没有人知道为什么?

1 个答案:

答案 0 :(得分:0)

编辑:

我很糟糕,没有意识到你正在使用“//”

似乎问题是返回

你正在使用:

return my_sum(i, mid) + my_sum(mid + 1, j)

让我们举例,i = 2,j = 4:

会发生什么:

if i == j: ## false nothing happens here
    return i  
mid = (i + j)//2  ## mid = (2+4)//2 = 3
return my_sum(i, mid) + my_sum(mid + 1, j) ## return my_sum(2,3) + my_sum(4,4)

my_sum (2,3):
....
mid = (2+3)//2 = 2
return my_sum (2,2) + my_sum(3,3) = 2 + 3 = 5

my_sum(4,4) = 4

这样:

my_sum (2,3) + my_sum(4,4) = 5 + 4 = 9

这不是你想要的问题。

所以这里的问题是problaby设置返回值