分析:每次进行翻倍的话也就是目的次数折半,就可以将算法的时间复杂度简化到O(logn)
实现方法第一次翻2倍,第二次4倍,...,第n次2的n次方倍。就可以达到目的
public class Main {
public static void main(String[] args) {
int result = powI(2,20);
System.out.println(result);
}
private static int powI(int a, int n) {
int est = 1;
int res = a;
if(n == 0) {
return 1;
}
while(est <= n / 2) {
res = res * res;
est = est << 1;
}
return res * powI(a,n - est) ;
}
}