剑指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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SSM框架实现用户查询、注册、登录——IDEA整合Spring、Spring MVC、Mybatis 框架「建议收藏」

    SSM框架实现用户查询、注册、登录——IDEA整合Spring、Spring MVC、Mybatis 框架「建议收藏」目录零、前言一、说明1、整合说明2、最终目标3、数据库准备二、搭建整合环境1、创建maven工程2、导入依赖坐标3、创建java和resources文件夹4、创建类和接口文件【1】创建存放javabean类文件:cn.star.domain.Users【2】创建数据访问层UsersDao接口:cn.star.dao.UsersDao…

    2022年7月14日
    53
  • python set转为list_python 怎么把set转成list

    python set转为list_python 怎么把set转成list今天小就为大家分享一篇python-list,set间的转换实例,具有很好的参考价值,推荐手册:Python基础入门教程其实python中,set转list的非常的简单,直接将set的值放入list()的括号中即可,相反,list转set也同样如此。(推荐学习:Python视频教程)>>>s=set(‘123456’)>>>print(s){‘6’,’4…

    2022年10月18日
    0
  • Py2exe_py import

    Py2exe_py import转载自:http://www.cnblogs.com/jans2002/archive/2006/09/30/519393.html一、简介py2exe是一个将python脚本转换成windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可以不用装python而在windows系统上运行这个可执行程序。py2exe已经被用于创建wxPython,Tkin

    2022年9月10日
    1
  • Python获取Websocket接口的数据

    Python获取Websocket接口的数据作者:小小明在前面的用Tornado实现web聊天室一文中介绍了python实现websocket的方法,这篇文章将要分享如何用python作为客户端获取websocket接口的数据。前文链接:https://blog.csdn.net/as604049322/article/details/112386560websocket的使用WebSocket是一种在单个TCP/TSL连接上,进行全双工、双向通信的协议。WebSocket可以让客户端与服务器之间的数据交换变得更加简单高效,服务端.

    2022年7月15日
    25
  • 通过ulimit改善linux系统性能(摘自IBM)[通俗易懂]

    通过ulimit改善linux系统性能(摘自IBM)

    2022年2月4日
    41
  • ARP欺骗原理_ARP欺骗实验

    ARP欺骗原理_ARP欺骗实验一.arp欺骗的原理 以太网设备(比如网卡)都有自己全球唯一的MAC地址,它们是以MAC地址来传输以太网数据包的,但是以太网设备却识别不了IP数据包中的IP地址,所以要在以太网中进行IP通信,就需要一个协议来建立IP地址与MAC地址的对应关系,使IP数据包能够发送到一个确定的主机上。这种功能是由arp(AddressResolutionProtocol)来完成的。 arp被设计成用来实现

    2025年7月30日
    0

发表回复

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

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