实现pow(double a, int b) 最简单直接的方法就是用一个循环使得result *= a 做b次,但是,这样的方法不是最优的,比如我们求2^100, 我们只需要得到2^50就可以了,因为2^100 = 2^50 * 2^50。而要求2^50,只需要得到2^25就可以了,所以,按照这样一个思路,要求pow(double a,int b),我们可以按照如下方法做:
public class Solution {
public double pow(double x, int m) {
int n = Math.abs(m);
if (n == 0) return 1;
if (n == 1) return m > 0 ? x : 1/x;
double result = pow(x, n/2);
if (n % 2 == 0) {
return m > 0 ? result * result : 1/ (result * result);
} else {
return m > 0 ? result * result * x : 1/(result * result * x);
}
}
}
转载请注明出处:http://blog.youkuaiyun.com/beiyeqingteng
454

被折叠的 条评论
为什么被折叠?



