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


**题目描述补充**: 设计一个函数,该函数接收两个整数`base`(底数)和`exponent`(指数)作为参数,并返回`base`的`exponent`次幂的结果。要求该函数能够处理正整数、负整数以及零的幂运算,但不需要考虑浮点数和非常大的整数(超出语言基本数据类型表示范围)的情况。 注意: - 如果`exponent`是负数,则返回`1 / (base的|exponent|次幂)`的结果,其中`|`表示绝对值。 - 如果`base`为0且`exponent`小于等于0,则函数应返回0的0次幂在数学上是未定义的,但根据某些约定可以返回1(视具体实现而定,这里我们按照返回1来处理)。 - 任何数的0次幂定义为1,除了0的0次幂(已在上面处理)。 **PHP代码示例**: ```php function power($base, $exponent) { if ($exponent == 0) { return 1; } if ($base == 0 && $exponent <= 0) { // 0的负数次幂或0的0次幂(按约定返回1) return 1; } $result = 1; if ($exponent < 0) { $exponent = -$exponent; $result = 1 / powerHelper($base, $exponent); } else { $result = powerHelper($base, $exponent); } return $result; } function powerHelper($base, $exponent) { $result = 1; while ($exponent > 0) { if ($exponent % 2 == 1) { $result *= $base; } $base *= $base; $exponent = intval($exponent / 2); } return $result; } // 示例 echo power(2, 3); // 输出 8 echo power(2, -2); // 输出 0.25 echo power(0, 0); // 输出 1 ``` **Python代码示例**: ```python def power(base, exponent): if exponent == 0: return 1 if base == 0 and exponent <= 0: return 1 # 0的负数次幂或0的0次幂(按约定返回1) result = 1 if exponent < 0: exponent = -exponent result = 1 / power_helper(base, exponent) else: result = power_helper(base, exponent) return result def power_helper(base, exponent): result = 1 while exponent > 0: if exponent % 2 == 1: result *= base base *= base exponent //= 2 return result # 示例 print(power(2, 3)) # 输出 8 print(power(2, -2)) # 输出 0.25 print(power(0, 0)) # 输出 1 ``` **JavaScript代码示例**: ```javascript function power(base, exponent) { if (exponent === 0) { return 1; } if (base === 0 && exponent <= 0) { // 0的负数次幂或0的0次幂(按约定返回1) return 1; } let result = 1; if (exponent < 0) { exponent = -exponent; result = 1 / powerHelper(base, exponent); } else { result = powerHelper(base, exponent); } return result; } function powerHelper(base, exponent) { let result = 1; while (exponent > 0) { if (exponent % 2 === 1) { result *= base; } base *= base; exponent = Math.floor(exponent / 2); } return result; } // 示例 console.log(power(2, 3)); // 输出 8 console.log(power(2, -2)); // 输出 0.25 console.log(power(0, 0)); // 输出 1 ``` **码小课网站中有更多相关内容分享给大家学习**,包括但不限于算法基础、数据结构、面试技巧等,欢迎访问码小课网站深入探索。
推荐面试题