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