16. 数值的整数次方(剑指 Offer 题解Java版)

文章目录

  • 16. 数值的整数次方

  • 题目链接

  • 题目描述

  • 解题思路

  • 实现代码

16. 数值的整数次方

题目链接

NowCoder

题目描述

        给定一个 double 类型的浮点数 base 和 int 类型的整数 exponent,求 base 的 exponent 次方。

解题思路

      下面的讨论中 x 代表 base,n 代表 exponent。

      比如,我们求n的32次方,我们先知道n 的16次方,在16次方的基础上再平方就可以,同理,我们可以先求8次方,4次方,2次方,因此我们求32次方就变成了先求平方,在此基础上求4次方,再求8次方,再求16次方,最后就可以求得32次方。
我们提出如下的公式:

      因为 (x*x)n/2 可以通过递归求解,并且每次递归 n 都减小一半,因此整个算法的时间复杂度为 O(logN)。

实现代码

package 数值的整数次方;/*作者     :XiangLin创建时间 :27/03/2020 17:00文件     :Solution.javaIDE      :IntelliJ IDEA*/public class Solution {    public double power(double base,int exponent){        if (exponent == 0)            return 1;        if (exponent == 1)            return base;        boolean isNagivate = false;        if (exponent < 0){             isNagivate = true;             exponent = -exponent;        }        double pow = power(base * base,exponent/2);        if (exponent % 2 != 0){             pow = pow * base;        }        return isNagivate? 1 / pow : pow;    }    public static void main(String[] args) {        Solution solution = new Solution();        System.out.println(solution.power(2.2,5));    }}



个人微信公众号,专注于学习资源、笔记分享,欢迎关注。我们一起成长,一起学习。一直纯真着,善良着,温情地热爱生活。

Don’t be in a hurry to grow up. Hold on to being a boy as long as you can.
不要急着长大,尽可能地做一个孩子吧。

本文分享自微信公众号 - 五角钱的程序员(xianglin965)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏

评论区

加载中...

相关推荐

LeetCode

一目录不折腾的前端,和咸鱼有什么区别目录一目录二题目三解题思路四统计分析五解题套路二题目在一个nm的二维数组中:每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例

LeetCode 5561. 获取生成数组中的最大值

文章目录1\.题目2\.解题1\.题目给你一个整数n。按下述规则生成一个长度为n1的数组nums:nums00nums11当2<2i<n时,nums2inumsi

mysql常用函数大全

一、数学函数ABS(x)返回x的绝对值BIN(x)返回x的二进制(OCT返回八进制,HEX返回十六进制)CEILING(x)返回大于x的最小整数值EXP(x)返回值e(自然对数的底)的x次方FLOOR(x)返回小于x的最大整数值GREATEST(x1,x2,...,xn)返回集合中最大的值LEAST(x1,

C++ 2的幂次方表示

【题目描述】任何一个正整数都可以用2的幂次方表示。例如:137272320同时约定方次用括号来表示,即ab可表示为a(b)。由此可知,137可表示为:2(7)2(3)2(0)进一步:722220(21用2表示)3220所以最后137可表示为:2(2(2)22(0))2(22(

Python3 学习手册每日更新

1、数学计算:n的m次方:nmn除以m的整数值:n//mn除以m的浮点值:n/mPython还支持复数,复数由实数部分和虚数部分构成,可以用abj,或者complex(a,b)表示,复数的实部a和虚部b都是浮点型tuple的元素不可改变,但它可以包含可变的对象,可变对象中