- 基于二分思想的快速幂经常使用到:

- 幂的结果的获取: 循环操作x=x^2的操作,每次都把n降为n/2; 初始设res=1。循环二分的过程中,当n为奇数时,将多出的一项x乘入res;为偶数就跳过该步骤,只执行二分。最终会变成

- 实例步骤:

- 流程:
-
初始化res=1;
-
循环:当n=0时,跳出循环。
- 当n%2==1时,将当前x乘入res( res = res*x )
- 执行x=x*x;
- n=n/2;
-
返回res;
- 注意事项: java中int类型变量的范围是[-2147483648,2147483647],所以涉及倒数运算,需要将负数转为正数的时候,一定要把int型的整数转换成long类型的数,防止因为越界而赋值错误,接下来的操作都只对long进行即可。
- 代码:
class Solution {
public double myPow(double x, int n) {
if(x==0) return 0;
long b = n;
double res = 1.0;
if (b < 0) {
x = 1/x;
b = -b;
}
while (b > 0) {
if (b % 2 == 1) res = res * x;
x = x * x;
b = b / 2;
}
return res;
}
}