​ 实

217 阅读1分钟

题目描述

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

示例 1:

输入:x = 2.00000, n = 10输出:1024.00000示例 2:

输入:x = 2.10000, n = 3输出:9.26100示例 3:

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

思路:

例如计算2的10次方

可以采用分治法,但是要分成奇数和偶数两种情况讨论。

class Solution {
    public double myPow(double x, int n) {
        double res=1;
        if(n==0){
            return 1;
        }
        if(n<0){
            x=1/x;
            //处理负数转正后的越界问题
            if(n==-2147483648){
                n=2147483647;
                res=x;
            }else{
                n=-n;
            }
        }
        while(n>1){
            if(n%2==0){
                x=x*x;
                n=n/2;
            }else{
                n=n/2;
                res=res*x;
                x=x*x;
            }
        }
        return res*x;
    }
}

\