zoukankan      html  css  js  c++  java
  • 剑指Offer11-数值的整数次方

    题目描述:

    实现函数double Power(double base,int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。

    解决思路:

    1.最简单的思路是从1到exponent进行循环,对base进行自乘;缺点:忽略了底数和指数取得特殊值的情况(底数为0或者指数为0,负数的情况)

    代码如下:

    public static double Power(double base,int exponent){
            double result = 1.0;
            for (int i = 1;i<=exponent;i++){
                result *= base;
            }
            return result;
        }

    2.对思路1的缺点进行解决即可

    代码如下:

    public static double Power1(double base,int exponent){
            double result = 0.0;
            //如果底数为0
            if(base == 0)
                return 0.0;
            //如果指数为0
            if(exponent == 0)
                return 1.0;
            //如果指数小于0
            int ex = 0;
            if(exponent < 0) {
                ex = -exponent;
                return 1.0 / Power2(base, ex);
            }
            return  Power2(base,exponent);
    
        }

    3.对原始的函数进行优化(使用递归的方法):

    当指数为偶数时;double Power(double base,int exponent) = double Power(double base,int exponent/2) * double Power(double base,int exponent/2);

    当指数为奇数时;double Power(double base,int exponent) = double Power(double base,int (exponent-1)/2) * double Power(double base,int (exponent-1)/2) * base;

    代码如下:

    public static double Power2(double base,int exponent){
            if(exponent == 0)
                return 1;
            if(exponent == 1)
                return base;
            double result = Power2(base,exponent >> 1);
            result *=result;
            if(exponent % 2 !=0)
                result *= base;
            return result;
        }
  • 相关阅读:
    Httprunner生成Allure格式HTML报告
    Go语言编写单元测试用例
    dotnet 在 UOS 国产系统上安装 dotnet sdk 的方法
    dotnet 在国产 UOS 系统利用 dotnet tool 工具做文件传输
    webpack丑化插件
    webpack自动生成html
    webpack vue
    webpack vue
    HO引擎近况20210225
    常用十大算法(三)— 动态规划算法
  • 原文地址:https://www.cnblogs.com/meteorst/p/9356666.html
Copyright © 2011-2022 走看看