剑指offer-数值的整数次方-Java简单和易于理解的递归方法,时间超越99%
数值的整数次方
http://www.nowcoder.com/questionTerminal/1a834e5e3e1a4b7ba251417554e07c00
public class Solution { public double Power(double base, int exponent) { return exponent > 0 ? quickPow(base, exponent) : quickPow(1/base, -exponent); } public double quickPow(double base, int exp) { if(exp == 0) { return 1; } if(exp == 1) { return base; } return Power(base, exp/2)*Power(base, exp - exp/2); } }
因为所有数往下除以2最后都能被分解为1和0,所以对于0次幂,返回1,对于1次幂返回base,剩下的就除以二往下分解。
负数次幂就是把base变为1/base,然后-exp次幂即可