我正在阅读一段关于使用递归关系确定嵌套循环复杂性的文本。在这个特定示例中,我试图确定计数变量将作为 n 的函数递增多少次。
这是我正在分析的循环:
for (int i = 1; i <= n; i++) {
int j = n;
while (j > 0) {
count++;
j = j / 2;
}
}
我想我明白第一行将简单地等同于 n 因为它只针对 n 的每个值执行,但其余的部分我遇到了麻烦。我认为答案类似于 n(n/2) ,只是这个例子使用的是整数除法,所以我不确定如何用数学表示。
我已经在纸上手动运行了几次循环,所以我知道对于 1-6 的 n 值,计数变量应该等于 1、4、6、12、15 和 18。我似乎无法想出公式......任何帮助将不胜感激!