zoukankan      html  css  js  c++  java
  • [编程题]数值的整数次方

    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);
                }
            }
        }
    }
    

  • 相关阅读:
    MySQL表操作:字段类型 约束条件
    MySQL安装 sql语句
    O学堂作文
    iOS沙盒
    xcode 8带来的问题
    身份证号验证(省份,生日,末位校验)
    UIView的layoutSubviews和drawRect方法何时调用
    UIView超出父视图部分响应
    xcode 8带来的问题
    计算今天是周几
  • 原文地址:https://www.cnblogs.com/jiyongjia/p/13191814.html
Copyright © 2011-2022 走看看