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

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

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

剑指Offer面试题:10.数值的整数次方此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“”,获取验证码。在微信里搜索“”或者“”或者微信扫描右侧二维码都可以关注本站微信公众号。

一 题目:数值的整数次方

题目:实现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型小数)都有误差。判断两个小数是否相等,只能判断它们之差的绝对值是不是在一个很小的范围内。如果两个数相差很小,就可以认为它们相等。

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

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

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

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

(0)
blank

相关推荐

  • Liunx常用命令

    Liunx常用命令Liunx常用命令

  • JVM内存结构面试问题及解答[通俗易懂]

    JVM内存结构面试问题及解答[通俗易懂]以下是jvm内存的常见面试问题:1、JVM管理的内存结构是怎样的?2、不同的虚拟机在实现运行时内存的时候有什么区别?3、运行时数据区中哪些区域是线程共享的?哪些是独享的?4、除了JVM运行时内存以外,还有什么区域可以用吗?5、堆和栈的区别是什么?6、Java中的数组是存储在堆上还是栈上的?7、Java中的对象创建有多少种方式?8、Java中对象创建的过程是怎么样的?9、Java…

  • linux中解压rar文件

    linux中解压rar文件linux平台默认是不支持RAR文件的解压,需要安装linux版本的RAR压缩软件,下载地址为:http://www.rarlab.com/download.htm下载之后进行解压之后,进入rar目录,运行make指令进行安装:[root@localhostrar]#lsacknow.txtlicense.txtorder.htmrarfiles.lstrar.txt

  • 用正则表达式验证身份证号码_用正则表达式验证身份证号

    用正则表达式验证身份证号码_用正则表达式验证身份证号JS正则表达式验证中国大陆身份证号码/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$///正则表达式:varidcardReg=/^[1-9]\d{7}((0\d)|(1[…

    2022年10月28日
  • 关键字推广公司境外服务器维护,如何维护网站关键词排名

    关键字推广公司境外服务器维护,如何维护网站关键词排名

    2021年11月28日
  • 有趣的python代码_python五角星代码

    有趣的python代码_python五角星代码原标题:使用Python代码的程序员也浪漫代码也浪漫:用Python放一场圣诞节烟花秀!天天敲代码的朋友,有没有想过代码也可以变得很酷炫又浪漫?今天就教大家用Python模拟出绽放的烟花庆祝昨晚法国队夺冠,工作之余也可以随时让程序为自己放一场烟花秀。这个有趣的小项目并不复杂,只需一点可视化技巧,100余行Python代码和程序库Tkinter,最后我们就能达到下面这个效果:学完本教程后,你也能做…

发表回复

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

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