确定该函数的 Big-O 增长率

Determining the Big-O growth rate of this function

我无法确定如何确定这些类型函数的增长率。

void A(int n){
 int i=1, s=1;
 while(s<=n){
   i++;
   s=s+i;
   cout<<"hi";
   }
}

已知这是 O(sqrt(n)),但我不知道如何计算?

如果您查看每次迭代中 s 的值,您会发现它变为 1、3、6、10、15 等。这些数字称为三角数,是 k 形式的数字(k+1)/2(通常将其证明为归纳练习。)

只要 s 超过 n,循环就会停止 运行。在第 k 次迭代中,s 的值为 k(k+1)/2,因此您可以通过在 k(k+1)/2 中求解 k 来计算迭代次数。尝试这样做,看看你发现了什么。这能解释平方根吗?