数学基础:对数、求和与相关定理解析
1. 对数与循环不变量
在循环执行过程中,我们可以通过分析变量之间的关系来确定循环执行的次数。例如,有如下循环代码:
int k;
for (k = 1; p <= n; p *= 2)
{
cout << k << endl;
++k;
}
当循环体执行时, k 的初始值 1 被输出,然后 k 递增到 2, p 的值翻倍为 4(即 $2^2$),接着检查循环控制条件 p <= n 。如果条件为真, k 的值 2 被输出, k 递增到 3, p 翻倍为 8(即 $2^3$),再次检查循环控制条件。当 k 达到值 L 时,变量 p 将得到值 $2^L$,此时循环控制条件最后一次为真。 L 被输出, k 递增到 L + 1 , p 翻倍为 $2^{L + 1}$,循环条件变为假。由此可得不等式:$2^L \leq n < 2^{L + 1}$。
对不等式各部分取以 2 为底的对数,得到:$L \leq \lg(n) < L + 1$。根据相关定理可知,$L = \lfloor\lg(n)\
超级会员免费看
订阅专栏 解锁全文
807

被折叠的 条评论
为什么被折叠?



