首页 > 其他 > 详细

50. Pow(x, n)

时间:2016-05-08 01:07:48      阅读:167      评论:0      收藏:0      [点我收藏+]
    /*
     * 50. Pow(x, n)
     * 2016-5-7 by Mingyang
     * Divide and Conquer 分成子问题------》recursive
     * Complexity is log(n), as he is dividing n by half all the way.
     * 我开始自己写的代码很烂,因为我并没有做到完全的divede成half,因为我不断地重复那个过程
     * 后面改进的代码就克服了这个问题
     */
     public static double myPow1(double x, int n) {
            double res=0.0;
            if(n==0)
              return 1.0;
            boolean flag=false;
            if(n<0){
              flag=true;
              n=-n;
            }
            if(n%2==0){
                res=myPow(x,n/2)*myPow(x,n/2);
            }else{
                res=myPow(x,n/2)*myPow(x,n/2)*x;
            }
            
            if(flag==true){
                res=1.0/res;
            }
            return res;
        } 
     public static double myPow(double x, int n) {
            if (n == 0) return 1.0;
            double half = myPow(x, n/2);
            if (n%2 == 0)
            {
                return half*half;
            }
            else if (n>0)
            {
                return half*half*x;
            }
            else
            {
                return half/x*half;
            }
        }

 

50. Pow(x, n)

原文:http://www.cnblogs.com/zmyvszk/p/5469521.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!