解题思路:
1.x^y
这里的y有两种情况
(1)当y为偶数时:(result = tmp * tmp;)
例如 2^6,
我们可以看做 (2的3次方)* (2的3次方)
(2)当y为奇数时:(result =x* tmp * tmp*;)
例如 3^7,
我们可以看做 (3的3次方)* (3的3次方)*3
2.首先判断指数的奇偶性
当 y & 1 == 0时,为偶数
反之,为奇数
例如: 若y=3 3&1 !=0
00 00 00 11
& 00 00 00 01
int mypow(int x,int y)
{
int result = 0;
int tmp = 0;
if (y == 1)
{
return x;
}
tmp = mypow(x, y / 2);
if (y & 1 == 0)//偶数
{
result = tmp * tmp;
}
else//奇数
{
result = x * tmp*tmp;
}
return result;
}
int main()
{
int x = 3;
int y = 3;
mypow(x, y);
printf("%d", mypow(x, y));
system("pause");
return 0;
}