题目描述
给定一个double类型的浮点数base和int类型的整数exponent, 求base 的 exponent次方。
解题思路
下面的讨论x代表base,n代表exponent。
因为 (x*x)n/2 可以通过递归求解,并且每次递归n都减小一半,因此整个算法的时间复杂度为 O(logN)。
public double Power(double base, int exponent) { if(exponent == 0) return 1; if(exponent == 1) return base; boolean isNegative = false; if(exponent < 0) { exponent = -exponent; isNegative = true; } double pow = Power(base*base, exponent / 2); if(exponent % 2 != 0) pow = pow * base; return isNegative?1/pow:pow; }