我认为这个算法(或代码)运行log n次,因为每次要评估的条件数量都会减少一个常数因子。我对么?如果没有,你能告诉我运行时间是什么吗?
g(x) (* x > 1 is a real number *)
while x > 1 do
x := x/3
答案 0 :(得分:3)
让这个循环运行k次,这将是算法的时间复杂度,在结束时:
第一次迭代:x =(x / 3 1 )
第二次迭代:x =(x / 3 2 )
第3次迭代:x =(x / 3 3 )
。
。
。
。
第k次迭代:x =(x / 3 k )< = 1(即终止条件)
解决这个问题:采取边界条件:
(x / 3 k )= 1
因此k = Log 3 x
因此,时间复杂度为O(LogN)
希望这有帮助。