def my_sum(i, j):
if i == j:
return i
mid = (i + j) //2
return my_sum(i, mid) + my_sum(mid + 1, j)
为什么O(j - i)
而不是O(log n)
? (j >= i)
答案 0 :(得分:0)
对于每个递归调用,算法将j-i
分成两半。递归深度将是获得i == j
所需的递归调用次数,每个分支将为log2(j-i)
。
因此,该算法形成一个递归树,其分支因子为b
,2
,深度为d
,log2(j-i)
。时间复杂度是树中的项目数:
b^d
= 2^log2(j-i)
= j-i