



代码:
注:当 n = -2147483648时执行 n = -n会因越界而赋值出错,故定义变量n1
class Solution {
public:
double myPow(double x, int n) {
if (x == 0) return 0;
double res = 1;
long n1 = n;
if (n < 0) {
x = 1 / x;
n1 = -n1;
}
while (n1) {
if (n1 & 1) res *= x;
x *= x;
n1 >>= 1;
}
return res;
}
};
一个较好的解法:
class Solution {
public:
double myPow(double x, int n) {
if (n == 0) return 1;
if (n == 1) return x;
if (n == -1) return 1 / x;
double half = myPow(x, n / 2);
double mod = myPow(x, n % 2);
return half * half * mod;
}
};
本文介绍了一种使用快速幂算法计算x^n的高效方法,通过两种不同的C++代码实现,一种适用于整数n的情况,另一种则提供了更通用的解决方案,包括处理负指数的情形。算法采用位操作和递归思想,避免了传统幂运算的重复计算,显著提高了计算效率。

3715

被折叠的 条评论
为什么被折叠?



