解题思路
一开始看到这个题目会觉得很简单,但如果按照一开始的思路做下去就会发现思维有很多漏洞,同时效率也不会很高,需要注意的问题如下:
1.base是double类型,并且有可能为零,exponent为int类型,并且有可能为负数
2.对于double类型的数判断相等,得考虑误差
3.对于递归的执行顺序
问题描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
代码实现
public class Solution { public double Power(double base, int exponent) { if(isDoubleEqual(base,0.0)) return 0; if(exponent==0) return 1; if(exponent==1) return base; int flag = exponent<0.0?-exponent:exponent; double result = Power(base, flag>>1); result*=result; if((flag&1)==1) result*=base; return exponent<0.0?(1.0/result):result; } public boolean isDoubleEqual(double a, double b){ if(a-b<0.0000001&&a-b>-0.0000001){ return true; } else{ return false; } } }