1.考慮到輸入的指數是零或負數的情況。
2.當底數是零,指數是負數時,做特殊處理。三種出錯處理方式:返回值,全域性**,異常
3.0的0次方
4.在判斷底數是否為零時,由於計算機內表示小數時都有誤差,如果兩個數相差很小就可以認為這兩個數相等。
public static boolean invalidinput = false;
public static double power(double base,int exponent)
double p1 = powerwithexponent(base,math.abs(exponent));
if(exponent<0)else
}public static double powerwithexponent(double n1,int n2)
return m;
}public static boolean equal(double num1,double num2)else}
更高效的方法,遞迴
用右移運算子代替除二,用位與運算子代替取餘。
位運算的效率比乘除及取餘效率要高很多。
//遞迴方法
public static double newpower(double base,int exponent)
if(exponent==1)
double result = newpower(base, exponent >> 1);
result*=result;
if((exponent&0x1)==1)
return result;}
劍指Offer之數值的整數次方
題目描述 給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。輸入 輸入可能包含多個測試樣例。對於每個輸入檔案,第一行輸入乙個整數t,表示測試案例的數目,接下來的t行每行輸入乙個浮點數base和乙個整數exponent,兩個數中間用乙個空格隔...
劍指offer之 數值的整數次方
問題描述 實現函式double power double base,int exponent 求base的exponent次方。不能使用庫函式,同時不需要考慮大數問題。package problem11 public class power if exponet 0 if exponet 0 els...
劍指offer 數值的整數次方
1 題目描述 給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。2 思路 需要考慮到的情況 1 指數為負數的時候,可以先對指數求絕對值,算出次方之後的結果再取倒數。2 當底數是0,指數是負數的時候,可以將無效變數設定為true,並返回0。3...