最近看到这样的一个题目求X的N次方,自己想了一些解决办法,记录一下留作日后参考。
求X的N次方,首先暴力求解:
int exp(int x, int n)
{
int ret = 1;
for(int i = 0; i < n; i++)
{
ret *= x;
}
return ret;
}int exp(int x, int n)
{
int ret = 1;
if(n == 0)
return ret;
int k = n;
while(k != 0)
{
if((k & 0x1) != 0)
ret *= x;
x *= x;
k >>= 1;
}
return ret;
}int exp(int x, int n)
{
if(n == 0)
return 1;
if(n == 1)
{
return x;
}
else
{
int s;
int m = n / 2;
s = exp(x, m);
if(m % 2 == 0)
{
return s * s;
}
else
{
return s * s * x;
}
}
}
原文:http://blog.csdn.net/wdxin1322/article/details/39668679