close

第一個想法,暴力破解

class Solution {
    public double myPow(double x, int n) {
       int i=1;
       int round= Math.abs(n);//絕對值
       double result=0;
       result=x;
       while(i<round){
             result=x*result;
             i++;
            }
       if(n>0){
             return result;
       }else{
             return 1/result;
       }
    }
}

 

正確簡潔的作法,使用遞迴:

class Solution {
    public double myPow(double x, int n) {
        if(n == 0)
            return 1;
        if(n<0){
            n = -n;
            x = 1/x;
        }
        return (n%2 == 0) ? myPow(x*x, n/2) : x*myPow(x*x, n/2);
    }
    
}

arrow
arrow
    全站熱搜

    程式小試身手 發表在 痞客邦 留言(0) 人氣()