快速幂方法求X的n次幂
程序员文章站
2022-07-12 12:03:15
...
快速幂:
链接:https://leetcode-cn.com/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/solution/mian-shi-ti-16-shu-zhi-de-zheng-shu-ci-fang-kuai-s/
double myPow(double x, int n) {
if(n == 0 || x == 1.0) return 1;
if(x == 0.0 && n < 0) return x; // 当x是0而n是负数的时候,特殊情况
double res = 1.0;
long exp = n; // 必须是long,否则如果n=INT_MIN,-n就会越界
if(n < 0)
{
x = 1 / x;
exp = - exp;
}
while(exp)
{
// 快速幂方法(位运算)
// 假如n=9,9写成二进制就是1001
// 每当exp & 1 = 1的时候,就执行乘方运算
if(exp & 1) res *= x;
x *= x;
exp >>= 1;
}
return res;
}
上一篇: 递归求x的n次幂(C语言)
下一篇: Power算法求X的N次幂