剑指offer:数值的整数次方(java)
2016-09-29 13:17
357 查看
题目描述:
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
幂的情况无非是三种:正数、0和负数。当幂是0的时候,直接返回1;当幂是负数的时候,需要先把其转化为正数来处理,然后返回其倒数就可以了,但base为0时,对0求倒数会导致程序运行出错;当幂是正数的时候,按照正常的计算方法就可以。实际上这道题主要考察时代码的健壮性——就是对幂的情况的考虑是否周全。
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
幂的情况无非是三种:正数、0和负数。当幂是0的时候,直接返回1;当幂是负数的时候,需要先把其转化为正数来处理,然后返回其倒数就可以了,但base为0时,对0求倒数会导致程序运行出错;当幂是正数的时候,按照正常的计算方法就可以。实际上这道题主要考察时代码的健壮性——就是对幂的情况的考虑是否周全。
boolean g_InvalidInput = false; boolean IsEqual(double num1, double num2) { if ( (num1 - num2 > -0.000001) && (num1 - num2 < 0.000001)) { return true; } else return false; }
double Power(double base, int exponent) { g_InvalidInput = false; if ( IsEqual(base,0.0) && exponent < 0 ) { g_InvalidInput = true; return 0.0; } if(exponent>0) int absExponent = exponent; if ( exponent < 0 ) { absExponent = -exponent; } double result = PowerWithUnsignedExponent(base, absExponent); if ( exponent < 0) { result = 1.0/result; } return result; }
double PowerWithUnsignedExponent(double base, int exponent) { if(exponent==0) return 1; if(exponent==1) return base; double result = PowerWithUnsignedExponent(base,exponent>>1); result *= result; if((exponent&0x1)==1) result *=base return result; }
相关文章推荐
- 【剑指offer】数值的整数次方-Java
- 剑指offer面试题11 数值的整数次方 java实现
- 剑指offer--面试题11:数值的整数次方--Java实现
- 剑指Offer面试题11(Java版):数值的整数次方
- 剑指Offer面试题11:数值的整数次方 Java实现
- 剑指offer编程题Java实现——面试题11数值的整数次方
- 剑指Offer 面试题16:数值的整数次方 Java代码实现
- 剑指Offer面试题11(Java版):数值的整数次方
- 【剑指offer-Java版】11数值的整数次方
- 剑指Offer面试题11(Java版):数值的整数次方
- 【剑指offer】数值的整数次方
- 剑指offer面试题11之求数值的整数次方
- 剑指offer——数值的整数次方
- 剑指offer_面试题11_数值的整数次方(*)
- 剑指offer 3.3 代码的完整性1- 求数值的整数次方
- 剑指offer 数值的整数次方
- 【剑指offer】之数值的整数次方
- 剑指Offer面试题:10.数值的整数次方
- 剑指offer--数值的整数次方
- 【剑指Offer面试编程题】题目1514:数值的整数次方---九度OJ