leetcode:50. Pow(x, n)
题目
实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,)。
示例:
输入:x = 2.00000, n = 10输出:1024.00000
输入:x = 2.10000, n = 3输出:9.26100
输入:x = 2.00000, n = -2输出:0.25000解释:2-2 = 1/22 = 1/4 = 0.25
解答 & 代码
快速幂(递归分治):
求,
- 如果 n 为偶数,则
- 如果 n 为奇数,则
递归结束条件:n == 1,则直接返回 x
class Solution {private:double calPow(double x, int n){// 递归结束条件 1:如果 n == 0,则直接返回 1if(n == 0)return 1;// 递归结束条件 2:如果 n == 1,则直接返回 xif(n == 1)return x;double result = calPow(x, n / 2);if(n % 2 == 0)return result * result;elsereturn result * result * x;}public:double myPow(double x, int n) {// 如果 n < 0,则 x 先转换为 1/xif(n < 0)x = 1 / x;return calPow(x, n);}};
复杂度分析:设求 n 次幂
- 时间复杂度
:
- 空间复杂度
:递归深度(栈空间复杂度)
执行结果:
执行结果:通过
执行用时:0 ms, 在所有 C++ 提交中击败了 100.00% 的用户
内存消耗:5.7 MB, 在所有 C++ 提交中击败了 91.49% 的用户
