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

解释: 22=122=14=0.252^{-2} = \frac {1}{2^{2}} = \frac {1}{4} = 0.25

说明:

-100.0 < x < 100.0
n 是 32 位有符号整数,其数值范围是 [231,2311][−2^{31}, 2^{31} − 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++代码:
LeetCode50-Pow(x, n)

相关文章: