剑指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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 如何彻底删除kvm虚拟机_虚拟机命令怎么删除

    如何彻底删除kvm虚拟机_虚拟机命令怎么删除(转)virsh命令速查表VirshVirshconnectVirshdisplaynodeinformation:VirshlistalldomainsListonlyactivedomainsVirshstartvmVirshautostartvmVirshautostartdisableVirshstopvm,virshshutd…

  • wing是什么_最短路径floyd算法例题

    wing是什么_最短路径floyd算法例题给定一个由 n 行数字组成的数字梯形如下图所示。梯形的第一行有 m 个数字。从梯形的顶部的 m 个数字开始,在每个数字处可以沿左下或右下方向移动,形成一条从梯形的顶至底的路径。规则 1:从梯形的顶至底的 m 条路径互不相交。规则 2:从梯形的顶至底的 m 条路径仅在数字结点处相交。规则 3:从梯形的顶至底的 m 条路径允许在数字结点相交或边相交。对于给定的数字梯形,分别按照规则 1,规则 2,和规则 3 计算出从梯形的顶至底的 m 条路径,使这 m 条路径经过的数字总和最大。输入格式第 1

  • Stack overflow at line:0 问题解决「建议收藏」

    Stack overflow at line:0 问题解决「建议收藏」首先声明这个问题的解决时针对于,做开发的人来说。如果非开发用户,在网上查找其他的解决方法。今天弄的一个池上陈酒网站,,打开网页时提示Stackoverflowatline:0。截图如下:             找了好长时间没发现问题,后来在网上搜了一下,做了一下参考,然后终于解决问题了.如果你的网页中有如下代码:分析:

  • 分布式服务框架 Zookeeper安装和配置详解

    分布式服务框架 Zookeeper安装和配置详解

  • 如何选择开源许可证?

    如何选择开源许可证?

  • 《前端运维》一、Linux基础–12网络

    这是linux部分的最后一篇内容,我们一起来学习下Linux网络。我们先看些命令吧:ifconfig,查看与配置网络状态。netstat,查询网络状态,常用选项如下:-t,列出TCP协议端口

发表回复

您的电子邮箱地址不会被公开。

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