尽可能的减少重复的计算
1)二分搜索--log(N-1)+2
条件:有序--数据稳定(即不允许插入操作和删除操作)的应用中非常有效
2)欧几里得算法--计算最大公因数-O(logN)--乘法次数最多2logN
long gcd(long m, long n)
{
while (n != 0)
{
long rem = m % n;
m = n;
n = rem;
}
return m;
}
3)幂运算--一个整数的幂--乘法次数最多2logN
N为偶数:XN=XN/2*XN/2
N为奇数:XN=X(N-1)/2*X(N-1)/2*N
运用递归思想
bool isEven(int n)
{
return n % 2 == 0;
}
long pow(long x, int n)
{
if (n == 0)
{
return 1;
}
if (n == 1)
{
return x;
}
if (isEven(n))
{
return pow(x * x, n / 2);
}
else
{
return pow(x * x, n / 2) * x;
}
}