pow(double a,int b)

来源:互联网 发布:java private修饰类 编辑:程序博客网 时间:2024/06/05 14:44

实现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.csdn.net/beiyeqingteng


原创粉丝点击