16 數值的整數次方

2021-10-21 17:53:05 字數 1736 閱讀 9035

public

class

doublepower

/** * 沒有考慮指數為負數和指數小於1的情況

* @param base 底數

* @param exponent 指數

* @return 結果

*/public

static

double

power1

(double base,

int exponent)

return result;

}//定義乙個全域性變數,判斷輸入非法問題

private

static

boolean invalidinput;

/** * 考慮指數小於0,指數大於0,底數=0的情況,底數大於0,底數小於0;

* @param base

* @param exponent

* @return

*/public

static

double

power2

(double base,

int exponent)

int ab***ponent = math.

abs(exponent)

;double absbase = math.

abs(base);if

(exponent >

0&& base >0)

if(exponent >

0&& base <0)

if(exponent <

0&& base >0)

return

unsignedexponent2(-

1, ab***ponent)*(

1.0/

unsignedexponent2

(absbase, ab***ponent));

}/**

* 計算正數的冪次

* @param absbase

* @param ab***ponent

* @return

*/public

static

double

unsignedexponent1

(double absbase,

int ab***ponent)

return result;

}/**

* 二分思想

* 我們直接從中間開始計算,比如32次方是6次方的平方,16是8次方的平方

* 8次方是四次方的平方,4次方是2次方的平方,就可以實現減少一半的計算量

* @param absbase

* @param ab***ponent

* @return

*/public

static

double

unsignedexponent2

(double absbase,

int ab***ponent)

if(ab***ponent ==1)

double reslut =

unsignedexponent1

(absbase, ab***ponent >>1)

; reslut *= reslut;

//這裡使用與求餘數if(

(ab***ponent &

0x1)==1

)return reslut;

}}

16 數值的整數次方

實現函式pow double base,int exponent 常規的思路是,迴圈相乘,雖然簡單,也有幾個要注意的地方 0 的負數次方是錯誤的輸入引數,因為負數次冪是借助除法算出,0 不能作為分母 非0數的負數次冪是,先求正數次冪,再取倒數。0 的 0 次方是無意義的 處理 or 不處理 而迴圈相...

數值整數次方

題目 實現函式double power double base,int exponent 求base的exponent次方。不得使用庫函式,同時不需要考慮 大數問題。includebool equal double num1,double num2 double powerwithunsignede...

數值整數次方

題目 實現函式double power double base,int exponent 求base的exponent次方。不得使用庫函式,同時不需要考慮 大數問題。includebool equal double num1,double num2 double powerwithunsignede...