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

    题目描述

    给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
     
    保证base和exponent不同时为0
    示例1

    输入

    2,3

    返回值

    8.00000

    题目本身不是很难,但是要注意考虑多种情况

    要考虑exponent==0的情况和exponent<0的情况,当exponent<0的时候还要考虑base等于0的情况,同时由于base为double类型,因此要特别注意能写成
    base==0.0,而应该写成
    abs(base-0.0)<Epslion
    class Solution {
        private:
            double Epslion = 1e-8;
    public:
        double Power(double base, int exponent) {
            if(abs(base-0.0)<Epslion)
                return 0;
            if(exponent < 0)
                return 1/Power(base, abs(exponent));
            else if(exponent == 0)
                return 1;
            else{
                if(exponent==1)
                    return base;
                else
                    return base * Power(base, exponent-1);
            }
            
        }
    };

    剑指offer上高效的写法:

    当n为偶数时an=an/2*an/2

    当n为奇数时an=an/2*an/2*base

    public class Solution {
        private double e = 1e-8;
        public double Power(double base, int exponent) {
            if(Math.abs(base-0.0)<e)
                return 0.0;//0的0次方可以返回0或者1
            if(exponent == 0)
                return 1;
            if(exponent == 1)
                return base;
            if(exponent < 0){
                return 1/Power(base, -exponent);
            }
            double result = Power(base,exponent>>1);
            if((exponent & 0x1)==0)
                return result * result;
            else
                return result * result * base;
      }
    }
  • 相关阅读:
    Access Token 机制详解
    Authorization Code 授权原理和实现方法
    Access Token 与 Refresh Token
    简单介绍 Oauth2.0 原理
    进行web开发时应该考虑的架构性因素
    查看linux服务器CPU数量
    Centos7 修改主机名
    Centos6 编译安装Python3.6
    Linux编译安装软件常见问题及排查
    问题列表
  • 原文地址:https://www.cnblogs.com/ttzz/p/13990866.html
Copyright © 2011-2022 走看看