假设您要计算n。一个简单的算法将 a、n 乘以如下:
result = 1;
for(int i =1; i <= n; i++)
result *= a;
该算法需要 O(n) 时间。不失一般性,假设 n=2^k
您可以使用以下方案改进算法:
result = a;
for (int i = 1; i <= k; i++)
result = result * result;
该算法需要 O(log n) 时间。对于任意n,你可以修改算法并证明复杂度仍然是O(logn)
很困惑,那么 n=2 k是怎么回事,为什么 k 只显示在第二个例子中?不明白这如何转化为 O(logn) 时间复杂度......