剑指offer:数值的整数次方
2017-03-13 20:24
411 查看
这题看似简单,其实还是有许多技巧的,不能忽视。
class Solution {
public:
double Power(double base, int exponent) {
if(exponent == 0)
return 1;
int absexponent = exponent;
if(exponent<0)
absexponent = -exponent;
double result = unsignedpower(base,(unsigned int)absexponent);
if(exponent<0)
result = 1/ result ;//复数次幂可以转换正数次幂分之一
return result;
}
//乘方问题可以递归的解决
double unsignedpower(double base, unsigned int exponent)
{
if(exponent == 0)
return 1;
if(exponent == 1)
return base;
double result = unsignedpower(base,exponent>>1);
result *= result;
if(exponent & 0x01)//求余可以用位运算
result *= base;
return result;
}
};
class Solution {
public:
double Power(double base, int exponent) {
if(exponent == 0)
return 1;
int absexponent = exponent;
if(exponent<0)
absexponent = -exponent;
double result = unsignedpower(base,(unsigned int)absexponent);
if(exponent<0)
result = 1/ result ;//复数次幂可以转换正数次幂分之一
return result;
}
//乘方问题可以递归的解决
double unsignedpower(double base, unsigned int exponent)
{
if(exponent == 0)
return 1;
if(exponent == 1)
return base;
double result = unsignedpower(base,exponent>>1);
result *= result;
if(exponent & 0x01)//求余可以用位运算
result *= base;
return result;
}
};
相关文章推荐
- 《剑指Offer》学习笔记——数值的整数次方
- 剑指OFFER之数值的整数次方(九度OJ1514)
- 《剑指offer》-数值的整数次方
- 剑指Offer之数值的整数次方
- 剑指offer-数值的整数次方
- 数值的整数次方(剑指offer面试题11)
- 剑指offer—第三章高质量代码(数值的整数次方)
- 剑指offer 数值的整数次方
- 《剑指Offer》面试题:数值的整数次方
- 《剑指offer》-数值的整数次方
- 剑指offer——数值的整数次方
- 剑指offer-面试题11.数值的整数次方
- 《剑指offer》面试题11:数值的整数次方
- 剑指offer 数值的整数次幂,求base的exponent次方,不能使用库函数,同时不需要考虑大数问题
- 剑指Offer(Java版):数值的整数次方
- 剑指Offer(12)______数值的整数次方
- 《剑指offer》面试题16:数值的整数次方
- 《剑指offer》数值的整数次方
- 剑指offer:数值的整数次方
- 剑指offer-面试题11:数值的整数次方