3
以下功能的“大O”是什么?我的假设是它是O(log(n)),但我想仔细检查。该函数简单地确定其参数是否是2的幂。该功能的2功能的“大O”
def pow_of_2(x):
a = math.log(x, 2)
if a == math.floor(a):
return True
else:
return False
以下功能的“大O”是什么?我的假设是它是O(log(n)),但我想仔细检查。该函数简单地确定其参数是否是2的幂。该功能的2功能的“大O”
def pow_of_2(x):
a = math.log(x, 2)
if a == math.floor(a):
return True
else:
return False
这似乎是'O(1)',因为它执行了一个固定的计算,然后返回'True'或'False'。 –
但不是计算基于x的变量@TimBiegeleisen – user3121369
该函数是O(log(x))(因为将x转换为double是O(log x)),但也会产生大x的错误结果。例如,'pow_of_2(2 ** 1000)'返回False。 –