就,用二进制位运算
1 int fastPower(int base, int exponent) { 2 int sum = 1; 3 while (exponent != 0) { 4 if ((exponent & 1) != 0) { 5 sum *= base; 6 } 7 exponent = expnonent >> 1; // 对指数进行移位 8 base *= base; // 让base的次幂以2的倍数增长 9 } 10 return sum; 11 }
e&1是判断那个位上是不是1的,是的话就要把base乘到sum上,然后变变base
不是的话,就光变变base就行