《剑指Offer》16. 数值的整数次方

题目链接

牛客网

题目描述

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

解题思路

非递归

class Solution {
   
    public double myPow(double x, int n) {
   
        long N = n; // 防止n在int最小值转正时溢出
        if (N<0) {
   
            x = 1/x;
            N = -N;
        }
        double res = 1;
        while (N!=0) {
   
            if (N%2 == 1)
                res *= x;
            x*=x;
            N=N>>1;
        }
        return res;
    }
}

递归

class Solution {
   
    public double myPow(double x, int n) {
   
        long N = n;
        if (N<0) return 1/myPow(x, -N);
        return myPow(x, N);
    }
    private double myPow(double x, long N) {
   
        if (N==0) return 1;
        if (N==1) return x;
        if (N%2 == 0) {
   
            return myPow(x*x, N/2);
        }
        else {
   
            return x*myPow(x*x, N/2);
        }
    }
}
全部评论

相关推荐

秋招投简历提醒助手:个人经验是,一般面二十场左右就会进入侃侃而谈阶段。我今年七月末的时候开始的第一次面试,都是很多不会,回复很慢。后面慢慢迭代,到九月中的时候基本上面啥说啥,很放松的状态
远程面试的尴尬瞬间
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务