Pow(x, n)
Implement pow(x, n), which calculates x raised to the power n (xn).
Example 1:
Input: 2.00000, 10
Output: 1024.00000
Example 2:
Input: 2.10000, 3
Output: 9.26100
Example 3:
Input: 2.00000, -2
Output: 0.25000
Explanation: 2-2 = 1 / 22 = 1 / 4 = 0.25
Note:
-100.0 < x < 100.0
n is a 32-bit signed integer, within the range [−231, 231 − 1]
Solution:
用第一个例子来说明,计算过程如下图所示。
double myPow(double x, int n) {
if(n == 0) return 1;
long nn = static_cast<long>(n); // 必须转一下,不然会出现-2147483648的情况
if(nn < 0)
{
nn = -nn;
x = 1.0 / x;
}
double res = 1;
while(nn != 0)
{
if(nn % 2 == 1)
res *= x;
x *= x;
nn /= 2;
}
return res;
}