首页 > 其他 > 详细

[编程题]数值的整数次方

时间:2020-06-25 15:54:54      阅读:57      评论:0      收藏:0      [点我收藏+]

12、数值的整数次方

题目描述

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

保证base和exponent不同时为0

我的思考

1、如果次方是正树,即直接循环累乘即可;
2、如果次方是0的话,任何数的0次方都是1;
3、如果次方是小于0的数的话,则在循环的时候先变为正数,最终把结果返回为1/res

代码

方法1: 分解法**

public class Solution {
    /*
    1、如果次方是正树,即直接循环累乘即可;
    2、如果次方是0的话,任何数的0次方都是1;
    3、如果次方是小于0的数的话,则在循环的时候先变为正数,最终把结果返回为1/res
    */
    public double Power1(double base, int exponent) {
        double res = 1.0;
        if(exponent>0){
            for(int i=0;i<exponent;i++){
            res *= base;
            }
            return res;
        }else if(exponent==0){
            return 1;
        }else{
            for(int i=0;i<-exponent;i++){   //
                res *= base;
            }
            return 1/res;
        } 
  }

方法2:二分法

     /*
    方法2:二分:时间超限
    */
    public static double Power(double base, int exponent) {

        //防止base是1,exponent特别大,导致耗时太长
        if(base==1){
            return 1.0;
        }

        double res = 1.0;
        if(exponent>0){
            if(exponent%2==0){
                for(int i=0;i<exponent/2;i++){
                    res *= base;
                }
                return res*res;
            }else{
                for(int i=0;i<exponent/2;i++){
                    res *= base;
                }
                return base*res*res;
            }
        }else if(exponent==0){
            return 1;
        }else{
            if(-exponent%2==0){
                for(int i=0;i<Math.abs(exponent/2);i++){   //
                    res *= base;
                }
                return 1/(res*res);
            }else{
                for(int i=0;i<Math.abs(exponent/2);i++){   //
                    res *= base;
                }
                return 1/(base*res*res);
            }
        }
    }
}

[编程题]数值的整数次方

原文:https://www.cnblogs.com/jiyongjia/p/13191814.html

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