分析:A的n次方,将n看成二进制!例如n为5,二进制101。看下图。所以每一次都要消耗一个二进制位,而且要用一个数字来保存当前二进制位累乘的值。
public static void questPos(int a, int n) {
int base = a;//base用来保存当前二进制位的累乘值
int res = 1;
while(n != 0) {
if((n & 1) != 0) {//只有n的当前位为1时,表示要乘上去
res *= base;
}//base不停的累乘,表示当前位应该累乘的值
base *= base;//当前值一定是累乘了2的n方,就跟幂对上了
n >>= 1;//右移
}
System.out.println(res);
}