LeetCode50-Pow(x, n)

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 22=221=41=0.25

说明:

-100.0 < x < 100.0
n 是 32 位有符号整数,其数值范围是 [ − 2 31 , 2 31 − 1 ] [−2^{31}, 2^{31} − 1] [231,2311]

一、思路

只要考虑下面几种情况就可以了:
(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++代码:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值