题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
思路
如书中所言,我就是那种上来就要写循环的人,完全没有考虑过负数和0;
代码
|
|
优化后的123456789101112131415static 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;