本文目录
题目描述
实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。
示例 1:
输入:x = 2.00000, n = 10 输出:1024.00000
示例 2:
输入:x = 2.10000, n = 3 输出:9.26100
个人C++解答
GYL
快速幂有两种方法,一种是分治思想,另一种是倍增法,我用的是分治的思路,将x的n次方化为x的n/2*n/2次方×x的n%2次方,下面给出代码;
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 a = myPow(x,n/2);
double b = myPow(x,n%2);
return a*a*b;
}
};
个人C++解答
GYL
这一部分是倍增法的代码,我没有去尝试理解,来自评论区FATSHEEP好友提供,灵神的题解也是用到的倍增法
double myPow(double x, int n) {
double ans = 1;
while(n != 0)
{
if(n & 1)
{
if(n < 0) ans *= 1/x;
else ans *= x;
}
n /= 2;
x *= x;
}
return ans;
}

