侧边栏壁纸
博主头像
秦怀杂货店博主等级

纵然缓慢,驰而不息。

  • 累计撰写 141 篇文章
  • 累计创建 37 个标签
  • 累计收到 11 条评论
隐藏侧边栏

剑指Offer【12】--数值的整数次方

秦怀杂货店
2020-11-05 / 0 评论 / 0 点赞 / 160 阅读 / 0 字
温馨提示:
本文最后更新于 2020-11-06,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

[toc]

题目描述

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

思路以及解法

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

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

$$Power(base,ex)=\begin


\endbase*Power(base,ex-1),ex取余2=1 \Power(base,ex/2)*Power(base,ex/2),ex取余2=0\

$$

    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;
    }

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

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

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

0

评论区