首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >剑指Offer(十二)--数值的整数次方

剑指Offer(十二)--数值的整数次方

作者头像
秦怀杂货店
发布2022-02-15 13:39:37
发布2022-02-15 13:39:37
5170
举报
文章被收录于专栏:技术杂货店技术杂货店
  • 题目描述
  • 思路以及解法

题目描述

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0。

思路以及解法

首先题目中的double类型应该不能拆解,但是int类型的整数exponet我们可以做点文章,我们平时求次方的时候,假设有个x的4次方,我们通常是求出一个x的平方数x^2,然后两个x^2相乘就可以得出x^4。

这里思路也一样,使用递归,同时考虑边界条件。如果指数是负数,则先取反,最后取结果的倒数即可。

Power(base,ex)=\begin{cases} base*Power(base,ex-1),ex取余2=1 \\ Power(base,ex/2)*Power(base,ex/2),ex取余2=0\\ \end{cases}
代码语言:javascript
复制
    public double Power(double base, int exponent) {
        if (exponent == 0) {
            // 指数为0则直接返回1
            return 1;
        }
        if (base == 0) {
            //底数为0直接返回0
            return 0;
        }
        // 判断指数是否为负数
        boolean isNegative = false;
        if (exponent < 1) {
            exponent = -exponent;
            isNegative = true;
        }
        double result;
        if (exponent % 2 == 1) {
            result = base * Power(base, exponent - 1);
        } else {
            double temp = Power(base, exponent / 2);
            result = temp * temp;
        }
        return isNegative ? (1.0 / result) : result;
    }

其实,上面的写法,主要是递归的思路,加上考虑不一样的边界条件。

此文章仅代表自己(本菜鸟)学习积累记录,或者学习笔记,如有侵权,请联系作者删除。人无完人,文章也一样,文笔稚嫩,在下不才,勿喷,如果有错误之处,还望指出,感激不尽~

技术之路不在一时,山高水长,纵使缓慢,驰而不息。 - END -

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 秦怀杂货店 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述
  • 思路以及解法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档