劍指offer 數值的整數次方

2022-07-12 09:48:10 字數 1304 閱讀 7809

給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。

思路:底數是double型別的浮點數, 指數是int型別:包括0,正負整數。

考慮異常情況:

1)0的0次方。

2)底數為0.0時,指數是負整數。

**一:排除異常情況後,求次冪用遞迴

1

class

solution else10}

11double power(double

base, int

exponent)

16//

用移位操作代替/2, 效率快很多, 此時res = base ^ (exponent / 2)

17double res = power(base, exponent >> 1

);18

//res = base ^ ((exponent / 2) * 2)

19 res *=res;

20//

如果為奇數,res = res * base;

21if (exponent & 1

) 24

return

res;25}

26public:27

double power(double

base, int

exponent)

31int p =abs(exponent);

32double res = power(base

, p);

33return exponent < 0 ? (1.0 /res) : res;34}

35 };

**二:快速冪運算

加入底數為a, 指數為11, 我們要求a^11, 11的二進位制表示為1011, 於是a^11 = a^(8+2+1) = a^(1000) * a^(0010) * a^(0001)

1

class

solution else10}

11public:12

double power(double

base, int

exponent)

17int p =abs(exponent);

18double res = 1.0;19

while

(p)

23 p >>= 1;24

base *= base;25

}26return exponent > 0 ? res : 1.0 /res;27}

28 };

劍指offer 數值的整數次方

1 題目描述 給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。2 思路 需要考慮到的情況 1 指數為負數的時候,可以先對指數求絕對值,算出次方之後的結果再取倒數。2 當底數是0,指數是負數的時候,可以將無效變數設定為true,並返回0。3...

劍指offer 數值的整數次方

給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。將指數大於0,小於0,等於0 底數不為0 的情況分開。其實指數為0的情況不必單獨拎出來 不進入if直接返回result為1.0 真正需要考慮的是,底數為0而指數為負的情況,數學上沒有意義。書...

劍指offer 數值的整數次方

給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。1.最直觀的方法,遞迴求解a b a a b 1 當然也可以用迴圈實現。要注意特殊情況,指數為0時乘方結果都是1 指數為負數時的計算,可以先轉化為正數再求倒數,但是底數為0時不能求導。2.效...