剑指Offer面试题:10.数值的整数次方

一题目:数值的整数次方二实现思路(1)当指数为负数的时候:可以先对指数求绝对值,然后算出次方的结果之后再取倒数。(2)当底数(base)是零且指数是负数的时候:通过全局代码或异常告诉调用者参

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

全栈程序员社区此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“验证码”,获取验证码。在微信里搜索“全栈程序员社区”或者“www_javaforall_cn”或者微信扫描右侧二维码都可以关注本站微信公众号。

一 题目:数值的整数次方

题目:实现doble Power(double base, int exponent),求basede exponent次方。不得使用库函数,同时不需要考虑大数问题。

二 实现思路

  (1)当指数为负数的时候:可以先对指数求绝对值,然后算出次方的结果之后再取倒数

  (2)当底数(base)是零且指数是负数的时候:通过全局代码或异常告诉调用者参数有误

  (3)0的0次方的时候:由于0的0次方在数学上是没有意义的,因此无论是输出0还是1都是可以接受的。

三 代码实现

#include <math.h>

bool Equal(double num1, double num2)
{
    if (num1 - num2 > -0.0000001 &&
        num1 - num2 < 0.0000001)
    {
        return true;
    }
    else
    {
        return false;
    }
}

// 基数为base为double类型,exponent为整数
double Power(double base, int exponent) throw(char *)
{
    // 当底数为0且指数为负数时抛出异常
    if (Equal(base,0.0) && (exponent < 0))
    {
        throw "base must be positive!";
    }
    double dbResult = 1.0;
    if (exponent >= 1)
    {
        for (int i = 0; i < exponent; i ++)
        {
            dbResult *= base;
        }
    }
    else if (exponent < 0)
    {
        for (int j = 0; j < abs(exponent); j ++)
        {
            dbResult *= base;
        }
        dbResult = 1/dbResult;
    }
    else if(exponent == 0)
    {
        dbResult = 1;
    }
    return dbResult;
}

void main()
{
    try
    {
        cout << Power(0,1) << endl;
        cout << Power(2, 3) << endl;
        cout << Power(-2, 3) << endl;
        cout << Power(2, -3) << endl;
        cout << Power(2, 0) << endl;
        cout << Power(0,-1) << endl;
    }
    catch (char *pError)
    {
        cout << pError << endl;
    }
    
    return;
}

剑指Offer面试题:10.数值的整数次方

细节:在判断底数base是不是等于0时,不能直接写base==0,这是
因为在计算机内表示小数时(包括float和double型小数)都有误差。判断两个小数是否相等,只能判断它们之差的绝对值是不是在一个很小的范围内。如果两个数相差很小,就可以认为它们相等。

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • nginx日志格式分析

    nginx日志格式分析先截取一个nginx标准日志:’$remote_addr-$remote_user[$time_local]””$request”$status$body_bytes_sent””$http_referer””$h…

    2022年5月5日
    53
  • KDD CUP99数据集预处理(Python实现)

    KDD CUP99数据集预处理(Python实现)目录KDDCUP99数据集预处理1、数据集下载2、KDD99网络入侵检测数据集介绍3、基于KDD99数据集的入侵检测分析4、符号型特征数值化5、KDDCUP99数据集预处理(Python实现)KDDCUP99数据集预处理1、数据集下载KDDCUP99数据集2、KDD99网络入侵检测数据集介绍介绍一介绍二3、基于KDD99数据集的入侵检测分…

    2022年10月16日
    0
  • 聊聊IT外包公司(外包公司的运作模式和赚钱之道)

    聊聊IT外包公司(外包公司的运作模式和赚钱之道)聊聊IT外包公司(外包公司的运作模式和赚钱之道)外包分类1.人力外包2.项目外包先说说人力外包比如:华为公司很大,有很多项目在做,但是一些次要的,或者非核心的项目,如果华为公司自己招兵买马的话,那么成本会很高,像员工的社保,公积金等等这些都要华为自己掏钱,这时候,华为公司就会想了,能不能把这部分次要的项目包出去,包给其他公司,交给别人去做,这样的话,直接付款给外包公司就行了,项…

    2022年5月12日
    83
  • linux读写锁

    linux读写锁读写锁与互斥量类似,但读写锁允许更高的并行性。其特性为:写独占,读共享。读写锁状态:一把读写锁具备三种状态:1.读模式下加锁状态(读锁)2.写模式下加锁状态(写锁)3.不加锁状态读写锁特性:1. 读写锁是“写模式加锁”时,解锁前,所有对该锁加锁的线程都会被阻塞。2. 读写锁是“读模式加锁”时,如果线程以读模式对其加锁会成功;如果线程以写模式加

    2022年8月12日
    4
  • response 的ContentType 说明[通俗易懂]

    response 的ContentType 说明[通俗易懂]不同的ContentType会影响客户端所看到的效果.默认的ContentType为text/html也就是网页格式.代码如: 显示的为网页,而 则会显示html原代码.以下为一些常用的ContentTypeGIFimages  JPEGimages  TIFFimages  MICROS

    2022年7月19日
    32
  • hdfs解决什么问题_hadoop命令和hdfs命令区别

    hdfs解决什么问题_hadoop命令和hdfs命令区别在已经配置好hadoop的环境下,查看hdfs所有目录如下命令不起作用./bin/hdfsdfs-ls.//应该更改为hdfsdfs-ls/同理查看user/hadoop/input目录内文件情况hdfsdfs-ls/user/hadoop/input上传到指定目录//hdfsdfs-put/本地文件目录hdfs目录//例如hdfsdfs-put/home/hadoop/myLocalFile.txtinput//

    2022年10月4日
    0

发表回复

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

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