一、基本原理:
快速幂是一种用于高效计算幂运算的算法。其基本思想是通过将指数进行二进制分解,利用指数的二进制表示来逐步计算幂的结果。 例如,计算 a^b,将 b 表示为二进制形式,如 b = 13 ,二进制为 1101 ,即 b = 8 + 4 + 1 。则 a^b = a^8 * a^4 * a^1 。
二、递归实现(关键代码):
long long quickPowRecursive(long long base, long long exp) {
if (exp == 0) {
return 1;
}
long long temp = quickPowRecursive(base, exp / 2);
if (exp % 2 == 0) {
return temp * temp;
} else {
return temp * temp * base;
}
}
三、迭代实现(关键代码):
long long quickPowIterative(long long base, long long exp) {
long long res = 1;
while (exp > 0) {
if (exp & 1) { // 如果 exp 二进制的最后一位是 1
res *= base;
}
base *= base;
exp >>= 1; // 右移一位,相当于除以 2
}
return res;
}