Pow(x, n) : https://leetcode.com/problems/powx-n/
Implement pow(x, n).
解析:
同剑指offer: 数值的整数次方 | Power
本题考查的关键点有:
注意: 关于基数为 1 或者 -1 时 也要单拿出来,对于n很大时,能显著减少计算次数
class Solution {
public:
double myPow(double x, int n) {
if (equal(x, 0.0) && n < 0)
return 0.0;
if (equal(x, 0.0))
return 0.0;
if (equal(x, 1.0) || n == 0)
return 1.0;
if (equal(x, -1.0))
return (n & 0x01) ? -1 : 1;
double result = unsignedExponentPow(x, abs(n));
if (n < 0)
result = 1.0 / result;
return result;
}
private:
double unsignedExponentPow(double x, int n) {
if (n == 0)
return 1.0;
if (n == 1)
return x;
double result = unsignedExponentPow(x, n >> 1);
result *= result;
if (n & 0x01)
result *= x;
return result;
}
bool equal(double x, double y) {
if (abs(x-y) < 0.00000001)
return true;
else
return false;
}
};
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/quzhongxin/article/details/46943853