最近看到這樣的一個題目求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;
}
}
}