资讯专栏INFORMATION COLUMN

leetcode50 Pow(x, n)自定义实现指数运算

DoINsiSt / 1320人阅读

摘要:题目要求此处为题目链接即用自己的代码实现指数运算。指数为负数即求其倒数。思路一二分法计算这题的思路我之前的一篇博客思路基本相同。所以在能转换为循环的情况下还是最好使用循环来解决。

题目要求

此处为题目链接
即用自己的代码实现指数运算。
指数运算一般有两种情况,即指数为整数和指数为负数的情况。指数为负数即求其倒数。

思路一:二分法计算

这题的思路我之前的一篇博客思路基本相同。有兴趣的可以直接翻看那篇博客再思考一下这题。代码如下

public double myPow(double x, int n) {
        if(x==0) return 0;
        if(n==0) return 1;
            
        x = n>0 ? x : 1/x;
        n = Math.abs(n);
        if(n%2!=0){
            return x*myPow(x, n-1);
        }
        long temp = 1;
        double result = x;
        while(n >= (temp+temp)){
            temp += temp;
            result *= result;
        }
        return result*myPow(x, n-(int)temp);
    }
思路二:递归

递归的方法在大多数情况下比较消耗存储空间,因为会保留上一个结果的所有情况和指向子函数的指针。所以在能转换为循环的情况下还是最好使用循环来解决。

    double myPow(double x, int n) {
        if(n<0) return 1/x * myPow(1/x, -(n+1));
        if(n==0) return 1;
        if(n==2) return x*x;
        if(n%2==0) return myPow( myPow(x, n/2), 2);
        else return x*myPow( myPow(x, n/2), 2);
    }


想要了解更多开发技术,面试教程以及互联网公司内推,欢迎关注我的微信公众号!将会不定期的发放福利哦~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/69980.html

相关文章

  • JavaScript是怎样编码数字的[How numbers are encoded in Java

    摘要:译者注规范化就是把小数点放在第一个非零数字的后面总结当指数的范围是十进制分数不是所有的十进制分数都能够非常精确的表示例如和都不能够被精确的表示成二进制浮点数。相同的,也不能被精确表示成一个十进制分数,它大概能被表示成。 在JavaScript中所有的数字都是浮点数,本篇文章将介绍这些浮点数在JavaScript内部是怎样被转为64位二进制的。我们会特别考虑整数的处理,所以读完本篇之后,...

    oysun 评论0 收藏0
  • 数字在JavaScript中是如何编译的

    摘要:数字数字都是浮点数,按照标准进行存储。因此,只有偶数可以在范围内表示。但只有超过指数的上限才称为中的溢出。结论在这篇博文中,我们研究了如何将其浮点数转换为位。 JavaScript中的所有数字都是浮点数。这篇博客文章解释了这些浮点数如何在64位二进制内部表示。由于特别考虑,本文中的数字将用整数表示,以便在阅读本文后,您将了解在以下交互中会发生什么: (译者注:浮点数并不一定等于小数,定...

    Moxmi 评论0 收藏0
  • JS数值

    摘要:由于浮点数不是精确的值,所以涉及小数的比较和运算要特别小心。根据标准,位浮点数的指数部分的长度是个二进制位,意味着指数部分的最大值是的次方减。也就是说,位浮点数的指数部分的值最大为。 一 前言 这篇文章主要解决以下三个问题: 问题1:浮点数计算精确度的问题 0.1 + 0.2; //0.30000000000000004 0.1 + 0.2 === 0.3; // ...

    williamwen1986 评论0 收藏0
  • 你对Number一无所知

    摘要:表示正数,表示负数。是一个无符号整数,因为长度是位,取值范围是。浮点数具体数值的实际表示。例如对于单精度浮点数,指数部分实际最小值是,对应的尾数部分从一直到,相邻两小浮点数之间的距离都是而与最近的浮点数即最小的非规约数也是。 二进制表示小数 例如用二进制表示 0.8125 0.8125 0.8125*2 = 1.625 取整为 1 0.625*2=1.25 取整为 1 0.25*2=0...

    Hanks10100 评论0 收藏0
  • Python标准库---10、内置类型:数字类型

    摘要:上一篇文章标准库内置类型逻辑值检测布尔运算比较下一篇文章标准库内置类型迭代器类型序列类型数字类型存在三种不同的数字类型整数浮点数和复数。标准库包含附加的数字类型,如表示有理数的以及以用户定制精度表示浮点数的。 上一篇文章:Python标准库---9、内置类型:逻辑值检测、布尔运算、比较下一篇文章:Python标准库---11、内置类型:迭代器类型、序列类型 数字类型 --- int,...

    NotFound 评论0 收藏0

发表评论

0条评论

DoINsiSt

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<