我正在练习增长顺序,但无法确定以下功能的增长顺序:
def ri(na):
if na <= 1:
return na
def han(na):
i = 1
while i < na:
i *= 2
return i
return ri(na/2) + ri(na/2) + han(na-2)
我相信函数han具有一个增长顺序$ \ Theta(n)= log(n)$,但是我不确定在添加ri(na / 2)时如何考虑这一点。如果有人可以帮助我弄清楚如何计算运行时间,我将不胜感激。非常感谢!
答案 0 :(得分:1)
han
函数的时间复杂度为Theta(log(n))
(每次i
被2
乘以)。因此,ri
的时间复杂度为T(n) = 2T(n/2) + Theta(log(n))
。使用the master theorem,我们可以说T(n) = Theta(n)
。