一般的乘方算法,时间复杂度是O(n)
通过下面的方式,能达到O(logn)——
递归实现:
int Power(int num, int exponent) { if (1 == exponent) { return num; } if (0 == exponent) { return 1; } int result = 0; if (exponent & 1) {//if exponent is odd result = num * Power(num * num, exponent >> 1); } else {//if exponent is even result = Power(num * num, exponent >> 1); } return result;
}
非递归实现:
int Power(int num, int exponent) { int result = 1; while (exponent) { if (exponent & 1) { result *= num; } num *= num; exponent = exponent >> 1; } return result; }