随笔-pow(x,n)

版权声明:中华人民共和国持有版权 https://blog.csdn.net/Fly_Fly_Zhang/article/details/87457269

题目:实现 pow(x, n) ,即计算 x 的 n 次幂函数。

示例 1:

输入: 2.00000, 10
输出: 1024.00000
示例 2:

输入: 2.10000, 3
输出: 9.26100
示例 3:

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

-100.0 < x < 100.0
n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。

思路:首先对指数进行分析,负指数的值为正指数的倒数。再对指数的奇偶进行分析,偶数等效于两个n/2指数函数的相乘,奇数为两个n/2指数函数相乘在乘以x;这样大大提高了效率,因此用递归进行处理;

代码实现:

class Solution {
    public double myPow(double x, int n) {

        if(n < 0) 
            return 1.0 / power(x, -n);
        else 
            return power(x, n); 
    }
    public double power(double x, int n) {
        if(n == 0) 
           return 1;
        double v = power(x, n / 2);
        if(n % 2 == 0) {
             return v * v;
        } else {
             return v * v * x;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/Fly_Fly_Zhang/article/details/87457269
今日推荐