剑指offer之数值的整数次方
来源:互联网 发布:知乎日本反战同盟 编辑:程序博客网 时间:2024/06/06 03:08
1.考虑到输入的指数是零或负数的情况。
2.当底数是零,指数是负数时,做特殊处理。三种出错处理方式:返回值,全局代码,异常
3.0的0次方
4.在判断底数是否为零时,由于计算机内表示小数时都有误差,如果两个数相差很小就可以认为这两个数相等。
public static boolean invalidInput = false;
public static double Power(double base,int exponent){
invalidInput = false;
if(equal(base,0.0)&&exponent<0){
invalidInput=true;
return 0.0;
}
double p1 = powerwithExponent(base,Math.abs(exponent));
if(exponent<0){
return 1.0/p1;
}else{
return p1;
}
}
public static double powerwithExponent(double n1,int n2){
double m=1.0;
for(int i=0;i<n2;i++){
m*=n1;
}
return m;
}
public static boolean equal(double num1,double num2){
if((num1-num2>-0.0000001)&&(num1-num2<0.0000001)){
return true;
}else{
return false;
}
}
更高效的方法,递归
用右移运算符代替除二,用位与运算符代替取余。
位运算的效率比乘除及取余效率要高很多。
//递归方法
public static double newPower(double base,int exponent){
if(exponent==0){
return 1;
}
if(exponent==1){
return base;
}
double result = newPower(base, exponent >> 1);
result*=result;
if((exponent&0x1)==1){
result*=base;
}
return result;
}
- 剑指Offer之数值的整数次方
- 剑指Offer之数值的整数次方
- 剑指Offer之 - 数值的整数次方
- 【剑指offer】之数值的整数次方
- 剑指offer之数值的整数次方
- 剑指offer之数值的整数次方
- 剑指Offer算法实现之十一:数值的整数次方
- 剑指offer系列之十一:数值的整数次方
- 剑指offer(十一)之数值的整数次方
- 剑指offer之面试题11:数值的整数次方
- 剑指offer之面试题11数值的整数次方
- 数值的整数次方[剑指offer]之python实现
- 剑指Offer之面试题11:数值的整数次方
- 剑指offer之十一---数值的整数次方
- 剑指offer:数值的整数次方
- 【剑指offer】数值的整数次方
- [剑指offer]Q11:数值的整数次方
- 【剑指offer】数值的整数次方
- javascript base64 作为文件上传。
- Unity3d监听手机暂停与退出事件
- POJ - 1426 暴力枚举+同余模定理 [kuangbin带你飞]专题一
- 在命令行下过滤adb logcat的输出
- android 开源控件
- 剑指offer之数值的整数次方
- iOS APP版本更新比较版本号大小
- 串口使用中断发送字符串,并在LCD显示内容
- Kafka文件的存储机制
- 谈自动化测试框架思想与构建
- 欢迎使用CSDN-markdown编辑器
- MySQL中ON DUPLICATE KEY UPDATE语法
- Leetcode / C++ / 515. Find Largest Value in Each Tree Row 结题报告+源代码
- MySQL-函数处理