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;
      }
    }
  • 相关阅读:
    我们怎样确保从大数据计算中获得价值
    大数据恐惧症
    大数据恐惧症
    一文读懂聚类算法
    一文读懂聚类算法
    用Python实现一个大数据搜索引擎
    用Python实现一个大数据搜索引擎
    No mysqld or mysql.server after mariadb-server install
    pip下载默认绕过代理
    linux下解压 tar.bz2
  • 原文地址:https://www.cnblogs.com/ttzz/p/13990866.html
Copyright © 2011-2022 走看看