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

  • 相关阅读:
    小米2/2S 手机由 Smartisan OS ROM 刷回 MIUI 教程
    Java构造和解析Json数据的两种方法详解二
    python-数据类型(上):数字、布尔值、字符串、字典
    python的介绍与安装
    PyCharm快捷键
    PyCharm安装模块
    PyCharm安装
    mac如何获取文件路径
    mac常用快捷键
    linux常用命令
  • 原文地址:https://www.cnblogs.com/jiyongjia/p/13191814.html
Copyright © 2011-2022 走看看