50. Pow(x, n)

admin2024-07-02  36

实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。

示例 1:

输入:x = 2.00000, n = 10
输出:1024.00000

示例 2:

输入:x = 2.10000, n = 3
输出:9.26100

示例 3:

输入:x = 2.00000, n = -2
输出:0.25000
解释:2-2 = 1/22 = 1/4 = 0.25

提示:

  • -100.0 < x < 100.0
  • -231 <= n <= 231-1
  • n 是一个整数
  • 要么 x 不为零,要么 n > 0 。
  • -104 <= xn <= 104
class Solution {
    public static double myPow(double x, int n) {
        // 转换为long,int类型的数据会超出范围
        long N = n;
        // 负数要采用倒数,正数的话正常即可
        return N > 0 ? quickMul(x, N) : 1.0 / quickMul(x, -N);
    }

    // 递归解法
    public static double quickMul(double x, long n) {
         // 特殊条件判断
        if (n == 0) {
            return 1;
        }
        if (x == 0) {
            return 0;
        }
        double power = 1;
        double baseNum = n > 0 ? x : 1 / x;
        while (n != 0) {
            // 奇数情况则需要额外乘以一个baseNum
            if (n % 2 != 0) {
                power *= baseNum;
            }
            // 偶数情况则直接相乘
            baseNum *= baseNum;
            // 分治思想逐渐往下递减
            n /= 2;
        }
        return power;
    }
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明原文出处。如若内容造成侵权/违法违规/事实不符,请联系SD编程学习网:675289112@qq.com进行投诉反馈,一经查实,立即删除!