剑指Offer 11 数值的整数次方
来源:互联网 发布:喝咖啡的利弊 知乎 编辑:程序博客网 时间:2024/04/30 15:26
题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
思路
如书中所言,我就是那种上来就要写循环的人,完全没有考虑过负数和0;
代码
static public double Power(double base, int exponent) { try { if (base==0.0&&exponent<0) { throw new ZeroException(""); } else if (base==0.0&&exponent>=0) { throw new ZeroException(""); } }catch (ZeroException e) { return 0.000000; } if (exponent==0) return 1.0; double a = 1.0; int ex1=0; if(exponent<0) ex1= 0-exponent; else ex1=exponent; for (int i = 0 ; i < ex1;i++) { a=base*a; } if (exponent<0) return 1/a; return a; }
优化后的
static public double Power1(double base ,int exponent) { int n=exponent; exponent=Math.abs(exponent); if (exponent==0) return 0; if (exponent==1) return base; double result = Power1(base,exponent>>1); result*=result; if ((exponent&1)==1) result*=base; return n>0?result:1/result; }
收获
- 用例很重要,看到题最好先想想输入会是什么;
- 浮点类型的比较时会出现问题的;因为存在误差,所以应该差值<0.000001之类的就可以了;
- & 与运算 乐意完美的观察数字的奇偶,最后一位是1还是0;
0 0
- 剑指offer-11 数值的整数次方
- 剑指offer 11 - 数值的整数次方
- 剑指Offer-11-数值的整数次方
- 剑指Offer 11 数值的整数次方
- 剑指offer-11:数值的整数次方
- 剑指offer 11 数值的整数次方
- 剑指Offer之数值的整数次方
- 剑指offer:数值的整数次方
- 【剑指offer】数值的整数次方
- [剑指offer]Q11:数值的整数次方
- 【剑指offer】数值的整数次方
- 剑指Offer之数值的整数次方
- 《剑指offer》数值的整数次方
- 剑指offer--数值的整数次方
- 剑指Offer之 - 数值的整数次方
- 剑指Offer-数值的整数次方
- 剑指offer 数值的整数次方
- 《剑指offer》数值的整数次方
- Sublime Text 设置
- 栈的链式存储结构操作及实现
- POJ
- [oracle]Ubuntu下ORA-27102及ORA-00845错误处理
- 实习 day5
- 剑指Offer 11 数值的整数次方
- View、自定义View
- LocakOption 参数
- L1-002. 打印沙漏
- java swing入门 计算器布局
- 编译及调试OpenJDK 8
- 人脸检测--LBPH-局部二进制编码直方图
- 进程阻塞wait和waitpid
- ESP8266--学习笔记(七)UART转发