Java算法–第二章–查找与排序(10)题目:涉及一个高效的求a的n次幂的算法
代码:
package section02;
public class case05_a的n次幂 {
public static void main(String[] args) {
int n = 15;
int a = 2;
int res1 = pow1(a,n);
System.out.println(res1);
int res2 = pow2(a,n);
System.out.println(res2);
}
private static int pow1(int a,int n) {
int res = 1;
for(int i = 0;i<n;i++) {
res *= a;
}
return res;
}
private static int pow2(int a,int n) {
if(n == 0)
return 1;
int res = a;
int ex = 1;
while((ex << 1) <= n) {
res = res*res;
ex <<= 1;
}
//差n-ex次方没有去乘道结果里面
return res*pow2(a,n-ex);
}
}
输出:
32768
32768