title | date | tags | |
---|---|---|---|
Pow(x,n)---LeetCode50(快速幂) |
2020-05-11 07:32:42 -0700 |
|
实现 pow(x, n) ,即计算 x 的 n 次幂函数。
示例 1:
输入: 2.00000, 10
输出: 1024.00000
就是快速幂。快速幂的核心思想就是,通过把指数减半,底数平方来使得循环次数尽可能减少。
//如果指数为奇数,底数与结果相乘。然后底数 = 底数*底数 ,指数 = 指数/2。这里其实是拿了一个底数^1与结果相乘,后面的当成偶指数情况变换。
//如果指数为偶数,直接 底数 = 底数*底数 ,指数 = 指数/2
double fastPow(double x,long long n)
{
double res =1;
while(n>0)
{
if(n&1)//如果n为奇数
{
res = res*x;
}
x = x*x;
n = n>>1;
}
return res;
}