題目描述
給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。
解題思路:首先要注意特殊情況的處理 base為0情況 exponent為0 為1情況 exponent為負數情況
1 #include 2程式執行結果:using
namespace
std;
3class
solution
14 unsigned int abexponent = (unsigned int)(exponent);//
一定要注意此處給其賦值,否則如果exponent不小於0時,該值隨機,會出現錯誤
15if(exponent < 0
)16 abexponent = (unsigned int)(-exponent);
17double result = 1.0;18
for(int i=1;i<=abexponent;i++)
1922
if(exponent<0)23
return
1.0/result;
24else
25return
result;
262728}
29bool equal(double num1,double
num2)
3035
else
36return
false;37
}38//方法二:a^n = a^(n/2)*a^(n/2) n為偶數
39//
a^n = a^(n/2)*a^(n/2)*a n為奇數
40double power2(double
base, int
exponent)
45if(exponent == 0)46
return
1.0;
47else
if(exponent == 1)48
return
base
;49 unsigned int abexponent = (unsigned int
)(exponent);
50if(exponent < 0
)51 abexponent = (unsigned int)(-exponent);
52double result = power2(base,abexponent>>1);//
右移1相當於除以2
53 result *= result;//
a^(n/2)*a^(n/2);
54if(abexponent & 0x1 == 1)//
奇數55
58if(exponent < 0)59
return
1.0/result;
60else
61return
result;62}
63};
64int
main()
6574
return0;
75 }
12 數值的整數次方(劍指offer)
12.數值的整數次方 給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。1.思路 double型別精度更高,不懂的先簡單理解為小數,int為整數。比如題目,double乙個 1.52,int乙個 2.要求 1.52 2 當指數為負數的時候,...
劍指Offer (12)數值的整數次方
題目描述 給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。實現如下 方法一 迴圈 此題不需要考慮計算後值溢位的情況,即不存在大數情況 異常情況 底數為0時 0.0 指數為0時 1.0 數學定義 指數為負數時,需要考慮先計算指數絕對值的結果...
劍指offer 12 數值的整數次方
給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。1 對數字的預處理,比如,0的負數次方等 2 提高計算n的m次方的效率方法一 遞迴。利用公式 ab b 2 0 ab 2 ab 2 a b 1 2 a b 1 2 aclass soluti...