zoukankan      html  css  js  c++  java
  • 剑指offer 12.代码的完整性 数值的整数次方

    题目描述

    给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
     
    本人渣渣代码:

    public double Power(double base, int exponent) {

    double result=1;
    try {
    if (exponent>0) {
    for (int i = 0; i < exponent; i++) {
    result=result*base;
    }
    }else {
    exponent=exponent*-1;
    base=1/base;
    for (int i = 0; i < exponent; i++) {
    result=result*base;
    }
    }

    } catch (Exception e) {

    e.printStackTrace();
    }


    return result;

    }

    牛客大佬神仙代码:
     
    /**
     * 1.全面考察指数的正负、底数是否为零等情况。
     * 2.写出指数的二进制表达,例如13表达为二进制1101。
     * 3.举例:10^1101 = 10^0001*10^0100*10^1000。
     * 4.通过&1和>>1来逐位读取1101,为1时将该位代表的乘数累乘到最终结果。
     */
    publicdoublePower(double base, int n) {
        double res = 1,curr = base;
        int exponent;
        if(n>0){
            exponent = n;
        }elseif(n<0){
            if(base==0)
                thrownewRuntimeException("分母不能为0"); 
            exponent = -n;
        }else{// n==0
            return1;// 0的0次方
        }
        while(exponent!=0){
            if((exponent&1)==1)
                res*=curr;
            curr*=curr;// 翻倍
            exponent>>=1;// 右移一位
        }
        returnn>=0?res:(1/res);       
    }
     
  • 相关阅读:
    学号20145332 《信息安全系统设计基础》实验二 固件设计
    第九周学习总结
    学号20145332 《信息安全系统设计基础》期中总结
    学号20145332 《信息安全系统设计基础》实验一 开发环境的熟悉
    第七周学习总结
    第六周学习总结
    第五周学习总结
    第三周学习总结
    第二周学习总结
    第一周学习总结
  • 原文地址:https://www.cnblogs.com/Transkai/p/10761845.html
Copyright © 2011-2022 走看看