快速求幂

快速求幂

快速幂和快速乘法都是利用了二进制的思想,时间复杂度为O(logN)级别的算法。

算法有两大优点:①便于取模操作(避免溢出) ②时间复杂度较低

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Main {

public static void main(String[] args) {
System.out.println(myPow(3.0, 3));
}

public static double myPow(double x, int n){
double ans = 1;
while (n > 0){
if((n & 1) == 1){
ans *= x;
}
x *= x;
n = n >> 1;
}
return ans;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Main {
public static void main(String[] args) {
System.out.println(myPow(3.0, 3));
}
public static double myPow(double x, int n){
if(x == 0.0 || n == 0){
return 1.0;
}
if(n == 1){
return x;
}
double half = myPow(x, n/2);
if(n % 2 == 0){
return half * half;
}else{
return half * half * x;
}
}
}

快速求幂
http://example.com/2023/06/23/算法/数学相关/16. 快速求幂/
作者
PALE13
发布于
2023年6月23日
许可协议