我无法确定如何确定这些类型函数的增长率。
void A(int n){
int i=1, s=1;
while(s<=n){
i++;
s=s+i;
cout<<"hi";
}
}
这是O(sqrt(n)),但我无法弄清楚如何?
答案 0 :(得分:2)
如果你在每次迭代中查看s的值,你会看到它是1,3,6,10,15等。这些数字被称为三角形数字,是k形式的数字(k + 1)/ 2(证明这是一种归纳练习。)
一旦s超过n,循环就会停止运行。在迭代k上,s的值是k(k + 1)/ 2,因此您可以通过求解k(k + 1)/ 2中的k来计算迭代次数。尝试这样做,看看你发现了什么。这是否解释了平方根?