这个问题看起来相对简单,但我似乎无法用n来找到运行时间。
问题在于:
j = n;
while(j >= 2) {
j = j^(1/2)
}
我真的不需要总运行时间,我只需要知道如何计算第二行和第三行被击中的次数(它们应该是相同的)。我想知道是否有某种公式可以找到这个。我可以看到上面的内容相当于:
for(j = n; n >= 2; j = j^(1/2)
请注意,操作类型并不重要,每次执行一行时,它都会计为1个时间单位。所以第1行只是1个时间单位,第2行是:
提前感谢任何提供帮助的人!非常感谢!
答案 0 :(得分:4)
向后工作以获得第2行的时间单位数:
time
n n log_2(n) units
1 1 0 0
2 2 1 1
4 4 2 2
16 16 4 3
16^2 256 8 4
(16^2)^2 65536 16 5
((16^2)^2)^2) ... 32 6
换句话说,对于时间单位t
的数量,n
是2 ^(2 ^(t-1)),除了t = 0
的情况n = 1
if(validationfunctions failed)
{
$error_msg .= '<p class="error">I want to show this message</p>';
return false;
}
if (!empty($error_msg)) {
echo $error_msg;
}
1}}。
要反过来,你有
当n <0时,t = 0。 2
t = log 2 (log 2 (n))+ 1当n> = 2时
其中log 2 (x)被称为x的binary logarithm。