剑指offer—12-**–数值的整数次方

剑指offer—12-**–数值的整数次方

 
题意
给你一个 base底数,一个指数exponent求出最后的结果。
 
分析
    //上来判断base有负数,0,正数;exponent有负数,0,正数
    //其中的特殊情况包括:
    //1.异常情况,0的负数次方
    //2.指数为0的情况
    //3.底数为负数的情况
    //4.正常情况
 
 
代码
public class Solution {
      
    public double Power(double base, int exponent) throws Exception{
        if(equal(base,0.0)&&exponent<0)throw new Exception(“0没有负数指数的情况”);
        if(exponent==0)return 1;
        if(exponent<0)return getResult(1.0/base,-exponent);
        return getResult(base,exponent);
      }
    
    //求出最后的结果,这里的问题是如何简化次方的计算方式。使用平方的方式计算会更简单一些
    public double getResult(double base,int exponent){
        if(exponent==0)return 1;
        if(exponent==1)return base;
        double result = getResult(base,exponent>>1);
        result = result *result;
        if((exponent&1)==1)result*=base;
        return result;
    }
    
    //因为计算机表示小数是会有误差的不能够直接使用==判断
    //如果两个小数的绝对值差小于0.0000001,那么说明相等,也就是-0.0000001<distance<0.0000001
    public boolean equal(double num1,double num2){
        if(-0.0000001<(num1-num2) && (num1-num2)<0.0000001){
            return true;
        }else{
            return false;
        }
    }
}
 
总结的细节:
1.double类型的数据如何判断相等:绝对值的差距<0.0000001的时候默认相等,不能够像int类型一样简单的使用==来判断。而且绝对值差距<0.0000001就是大于-0.0000001并且小于0.0000001
2.判断某个数是否为奇数还是偶数的方式,就是通过将这个数和1做与操作得出结果。
3.>>带符号移动的问题。

转载于:https://www.cnblogs.com/buptyuhanwen/p/9377015.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101523.html原文链接:https://javaforall.net

(0)
上一篇 2021年6月9日 下午4:00
下一篇 2021年6月9日 下午5:00


相关推荐

  • 网络入门及制作双绞线实验结论_计算机网络双绞线包括哪几种类型

    网络入门及制作双绞线实验结论_计算机网络双绞线包括哪几种类型专业软件工程姓名小何学长实验目的:1. 掌握RJ-45双绞线的直通线和交叉线的制作方法,了解其应用场合。2. 利用测线仪测试网线是否正常。实验原理:1. 双绞线简介双绞线是最常用的网络传输媒体,其型号10BBASE-T、100BASE-T是指10Mbps、100Mbps以基带传输方式工作的双绞线。按信号线外面有无屏蔽保护层分为:屏蔽双绞线——STP,有金属网丝套作为屏蔽层,无分类;无屏蔽双绞线——UTP,没有屏蔽层,有多个分类,如UTP-3,UTP-5,UTP-5+多…

    2025年7月6日
    5
  • orcle数据库[通俗易懂]

    orcle数据库[通俗易懂]步骤:1、下载安装数据库2、安装plsqldevepor3、使用下面的东西创建表空间和用户使用plsql来orcle创建表空间和用户

    2025年8月4日
    4
  • java集合概念_java多线程

    java集合概念_java多线程一、概述HashMap可能是我们最经常用的Map接口的实现了。话不多说,我们先看看HashMap类的注释:基于哈希表的Map接口实现。这个实现提供了所有可选的映射操作,并允许空值和空键。(Has

    2022年8月16日
    9
  • shell IF语句的使用[通俗易懂]

    shell IF语句的使用[通俗易懂]目录条件语句(ifelse)的简单介绍if…fi语句if…else…fi语句if…elif…[else…]fi语句条件语句(ifelse)的简单介绍    如果你在用shell完成一些逻辑判断的时候,可能会用到if…else之类的条件语句。但是,shell中非同寻常的语法会让你每次都需要在网上重新查询确认。在shell中,即使是一些标点…

    2022年7月11日
    26
  • 项目开发实战_go项目实战

    项目开发实战_go项目实战TodoMVC是一个非常经典的案例,功能非常丰富,并且针对多种不同技术分别都开发了此项目,比如React、AngularJS、JQuery等等,本文使用Vue开发。

    2025年10月30日
    4
  • 《大话数据结构》读后感_数据结构读书笔记5000

    《大话数据结构》读后感_数据结构读书笔记5000《大话数据结构》读后总结(七)

    2022年4月21日
    137

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号