题目描述补充
题目:求一个数的幂
给定两个整数 base
(底数)和 exponent
(指数),请计算并返回 base
的 exponent
次幂(即 base^exponent
)。你需要考虑指数为负数的情况,如果指数为负数,则返回其倒数的绝对值次幂的倒数。另外,指数超出整型范围时,应当考虑其可能的表示形式(例如,Python 中的 **
运算符可以直接处理大数幂运算,而无需显式转换)。
示例
输入:
base = 2, exponent = 3
输出:8
输入:
base = 2, exponent = -2
输出:0.25
,因为 $2^{-2} = \frac{1}{2^2} = 0.25$输入:
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
码小课网站中有更多相关内容分享给大家学习,包含更多算法、数据结构及编程语言的进阶知识,助力你在编程道路上更进一步。