def f1(lst):
i=3
while i<len(lst):
print(lst[i])
i **= 3
此代码的时间复杂度是多少?答案是O(loglogn),为什么?
答案 0 :(得分:2)
看看i
如何通过循环增长(^
意味着权力在这里):
i_0 = 3
i_1 = i_0^3 = 3^3
i_2 = i_1^3 = (3^3)^3 = 3^(3*3)
i_3 = i_2^3 = (3^(3*3))^3 = 3^(3*3*3)
...
i_n = 3^(3^n)
这称为迭代权力,但不 Tetration。如您所见,它是嵌套的指数,因此时间复杂度将是反函数:O(log3(log3(n)))
。