当前位置: 面试刷题>> 的幂 (经典算法题500道)


题目描述补充

题目:求一个数的幂

给定两个整数 base(底数)和 exponent(指数),请计算并返回 baseexponent 次幂(即 base^exponent)。你需要考虑指数为负数的情况,如果指数为负数,则返回其倒数的绝对值次幂的倒数。另外,指数超出整型范围时,应当考虑其可能的表示形式(例如,Python 中的 ** 运算符可以直接处理大数幂运算,而无需显式转换)。

示例

  1. 输入:base = 2, exponent = 3 输出:8

  2. 输入:base = 2, exponent = -2 输出:0.25,因为 $2^{-2} = \frac{1}{2^2} = 0.25$

  3. 输入:base = 0, exponent = 0 输出:1,按照数学定义,任何数的0次幂都是1(除了0的0次幂在数学上是未定义的,但在这里我们可以按1处理)。

PHP 示例代码

function myPow($base, $exponent) {
    if ($exponent == 0) return 1;
    if ($exponent < 0) {
        $base = 1 / $base;
        $exponent = -$exponent;
    }
    $result = 1;
    while ($exponent > 0) {
        if ($exponent % 2 == 1) {
            $result *= $base;
        }
        $base *= $base;
        $exponent = intdiv($exponent, 2);
    }
    return $result;
}

// 测试
echo myPow(2, 3); // 输出 8
echo myPow(2, -2); // 输出 0.25
echo myPow(0, 0); // 输出 1

Python 示例代码

def myPow(base, exponent):
    if exponent == 0:
        return 1
    if exponent < 0:
        base = 1 / base
        exponent = -exponent
    result = 1
    while exponent > 0:
        if exponent % 2 == 1:
            result *= base
        base *= base
        exponent //= 2
    return result

# 测试
print(myPow(2, 3))  # 输出 8
print(myPow(2, -2))  # 输出 0.25
print(myPow(0, 0))  # 输出 1

JavaScript 示例代码

function myPow(base, exponent) {
    if (exponent === 0) return 1;
    if (exponent < 0) {
        base = 1 / base;
        exponent = -exponent;
    }
    let result = 1;
    while (exponent > 0) {
        if (exponent % 2 === 1) {
            result *= base;
        }
        base *= base;
        exponent = Math.floor(exponent / 2);
    }
    return result;
}

// 测试
console.log(myPow(2, 3)); // 输出 8
console.log(myPow(2, -2)); // 输出 0.25
console.log(myPow(0, 0)); // 输出 1

码小课网站中有更多相关内容分享给大家学习,包含更多算法、数据结构及编程语言的进阶知识,助力你在编程道路上更进一步。

推荐面试题