我必须检查此功能的运行时间。我知道答案是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)
有没有人知道为什么?
答案 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设置返回值