该块是:
i=2
while(i<n){
i=i*i;
x=x+1;
}
我需要找到x = x + 1执行次数的θ表示法。我创建了一个包含一些示例值的表,但我无法弄清楚如何从那里继续前进。以下是我的示例值:
(n) - (# times looped)
3 - 1
5 - 2
20 - 3
400 - 4
答案 0 :(得分:4)
考虑这个问题的一种方法是在循环中追踪i的值。在第一次迭代之前,值为2 = 2 1 。在第二次迭代之后,它是4 = 2 2 。在第三次迭代之后,它是16 = 2 4 。在第四次迭代之后,它是256 = 2 8 。在第五个之后,它是65,536 = 2 16 。
如您所见,在循环的k次迭代之后,i的值为2 2 k 。这意味着迭代次数将(大致)对应于k的最低值,使得
2 2 k ≥n
取两边的对数,我们得到
2 2 k ≥n
2 k ≥log 2 n
k≥log 2 log 2 n
因此循环迭代次数大致为log 2 log 2 n。因此,循环运行O(log log n)次。更确切地说,循环运行Θ(log log n)次,因为循环不会停止,直到k迭代结束。
希望这有帮助!