LeetCode50-Pow(x, n)
实现 pow(x, n) ,即计算 x 的 n 次幂函数。
示例 1:
输入: 2.00000, 10
输出: 1024.00000
示例 2:
输入: 2.10000, 3
输出: 9.26100
示例 3:
输入: 2.00000, -2
输出: 0.25000
解释: 2 − 2 = 1 2 2 = 1 4 = 0.25 2^{-2} = \frac {1}{2^{2}} = \frac {1}{4} = 0.25 2−2=221=41=0.25
说明:
-100.0 < x < 100.0
n 是 32 位有符号整数,其数值范围是
[
−
2
31
,
2
31
−
1
]
[−2^{31}, 2^{31} − 1]
[−231,231−1] 。
一、思路
只要考虑下面几种情况就可以了:
(1)n等于0
(2)n大于0
(3)n小于0
(4)x等于-1
(5)x等于0
(6)x等于1
(7)double数据类型所能表示的范围
(8)计算过程中结果过小等于0
C++代码:
class Solution {
public:
double myPow(double x, int n) {
long long m = n, i;
double pow = 1.0;
if (x == 0.0)
return 0;
else if (x == 1.0)
return 1;
else if (x == -1.0) {
if (abs(m) % 2 == 0)
return 1;
else
return -1;
}
else if (n == 0)
return 1;
else if (n > 0) {
for (i = 0; i < m; i++) {
pow *= x;
if (pow == 0.0 || pow == INFINITY)
break;
}
}
else {
for (i = 0; i < abs(m); i++) {
pow *= 1/x;
if (pow == 0.0 || pow == INFINITY)
break;
}
}
return pow;
}
};
C++代码: