码迷,mamicode.com
首页 > 其他好文 > 详细

任意数的整数次方

时间:2017-04-11 13:04:38      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:image   ges   blog   不能   java   void   public   技术分享   create   

有如下公式:

技术分享

因此我们求解a^n时,可以先求解r=a^(n/2)

比如求解r=3^5,先求解3^(5-1)/2=3^2=9,因此3^5=9×9×3=243

 

注:我们需判断a是否为零,n的正负情况

 

代码:

/**
 * Created by wuchao on 17-3-29.
 */
import java.util.*;
public class test {
    public static int array[] = {1,1,0,1,1,1,1};
    public static void main(String[] args) {
        System.out.println(power(2,-3));
    }
    public static double power(double base,int exponent){
        //首先判断base是否为0,但double不能直接和0比较
        if(base<0.0000001 && base>-0.0000001) return 0;
        if(exponent==0) return 1;
        int flag=1;//正负标志
        if(exponent<0) {
            flag=-1;
            exponent=-exponent;
        }
        double result = powerWithunsigned(base,exponent);
        if(flag>0) return result;
        return 1/result;
    }
    //exponent>0
    public static double powerWithunsigned(double base,int exponent){
        if(exponent==0) return 1;
        if(exponent==1) return base;
        double result = powerWithunsigned(base,exponent>>1);
        result = result*result;
        //如果exponent为奇数
        if((exponent&1)>0){
            result=result*base;
        }
        return result;
    }
}

 

任意数的整数次方

标签:image   ges   blog   不能   java   void   public   技术分享   create   

原文地址:http://www.cnblogs.com/wuchaodzxx/p/6692978.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!