12 劍指offer 數值的整數次方

2022-08-24 01:51:10 字數 1666 閱讀 6018

題目描述

給定乙個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...