【剑指offer】面试题16:数值的整数次方(Java)
實(shí)現(xiàn)函數(shù)double Power(double base, int exponent),求base的exponent次方。不得使用庫(kù)函數(shù),同時(shí)不需要考慮大數(shù)問(wè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
?
說(shuō)明:
-100.0 <?x?< 100.0
n?是 32 位有符號(hào)整數(shù),其數(shù)值范圍是?[?231,?231?? 1] 。
思路:二分法
需要注意的是寫(xiě)return powcorn(x,n/2)*powcorn(x,n/2);會(huì)超出時(shí)間限制
需要減少多余運(yùn)算
定義變量a=powcorn(x,n/2),return? a*a
這樣運(yùn)算一次就夠
代碼:
class?Solution?{
????public?double?myPow(double?x,?int?n)?{
????????int?flag?=?0;
????????if(n==0)
????????{
????????????return?1;
????????}
????????else?if(n<0){
????????????n=-n;
????????????flag=1;
????????}
????????double?result?=?PowCorn(x,n);
????????if(flag==1)
????????{
????????????result?=?1/result;
????????}
????????return?result;
????}
????public?double?PowCorn(double?x,int?n)
????{
????????if(n==0)
????????{
????????????return?1;
????????}
????????double?a?=?PowCorn(x,n/2);
????????if(n%2==0)
????????{
??????????
????????????return?a*a;
????????}
????????else
????????{
????????????return?a*a*x;
????????}
????}
}
總結(jié)
以上是生活随笔為你收集整理的【剑指offer】面试题16:数值的整数次方(Java)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 7-5 列车厢调度 (25 分)
- 下一篇: Java中注释的使用