递归求解:
int f_pow(int a, int n)
{
if (n == 0) return 1;
if (n == 1) return a;
int tmp = f_pow(a, n >> 1);
int ret = tmp * tmp;
if (n & 1) ret *= a; //位运算,判断n奇偶,奇数要再乘一次a
return ret;
}
循环求解:
int ff_pow(int a, int n)
{
int ret = 1;
while (n)
{
if (n & 1) ret *= a;
a *= a;
n >>= 1;
}
return ret;
}