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


相关推荐

  • python读取txt文件的行数

    python读取txt文件的行数python读取txt文件的行数python读取txt文件的行数python读取txt文件的行数count=len(open(filepath,’rU’).readlines())

    2022年5月23日
    50
  • heapdump.phd分析工具_dump文件分析工具

    heapdump.phd分析工具_dump文件分析工具heapdump分析工具是一款强大的数据分析工具,它可以用图表的形式来展现相应的分析结果,在使用heapdump分析工具之前请先安装JDK1.6。运行环境1.运行环境要求JDK1.6或以上如果JDK版本过低,报错如下:Exceptioninthread”main”java.lang.NoClassDefFoundError:java/util/regex/PatternSyntaxEx…

    2022年10月2日
    0
  • 关于radcontrols控件之Radupload「建议收藏」

    关于radcontrols控件之Radupload「建议收藏」Namespace:Telerik.Windows.ControlsAssembly:Telerik.Windows.Controls.Input(inTelerik.Windows.Controls.Input.dll)RadUpload是客户端和服务器端的一部分。在客户端执行完全在浏览器中使用Silverlight的平台。在服务器端需要处理的服务器进行处理的文件提交到客户端。检查在…

    2022年7月24日
    4
  • quartz定时任务不执行(任务统筹策略)

    由于某种原因,例如应用停掉,导致定时任务错过了本该执行的时间点,这就是定时任务过期。对于过期的定时任务,我们需要基于某种策略对其进行处理。过期策略在Trigger接口中定义了两种过期策略,publicstaticfinalintMISFIRE_INSTRUCTION_SMART_POLICY=0;publicstaticfinalintMISF…

    2022年4月11日
    1.5K
  • ICMP报文分析

    ICMP报文分析

    2021年11月14日
    50
  • 以pptp方式登陆管理单口旁路由

    以pptp方式登陆管理单口旁路由由于入手了下载宝这个单口的千兆网口设备,一直想发挥一下它的余热,比如充当旁路由过滤广告什么的。但是修改脚本等功能必须以Lan口连接方式登录才能实现,这样的话,管理计算机网线不得不在主路由、下载宝之间来回插拔,非常的不方便。因为我的下载宝刷了Hiboy的老毛子固件,它提供了pptp访问方式,这样连接在主路由上的计算机即可通过连接在主路由上的下载宝WAN口ip登录,并实现lan口登录管理的所有功能。…

    2022年5月29日
    27

发表回复

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

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