12 數值的整數次方

2022-07-29 03:03:12 字數 1085 閱讀 7870

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

常規解法:

注意1double型別不能直接和0進行比較;

2 要判斷底數是否為0,要判斷指數是否為負數;用乙個變數先記錄,然後統一使用正的指數進行計算。

3 最後如果是負數需要將結果取倒數,而且前面要分奇數和偶數進行計算。

class

solution

if(exponent == 0

)

int tmp =abs(exponent);

double res = power(base,tmp >> 1

); res *=res;

if(tmp % 2 == 1

)

if(exponent < 0

)

return

res;

}};

解法2:快速冪。

tmp & 1 == 1,只能判斷最後一位,0011 & 0010 = 0010 = 2.

快速冪的原理相當於將指數變為二進位制,分別計算每一二進位制位的值然後相乘。

一定記住對於這種有指數的一定要判斷是否為負數,將負數轉化為整數計算後取反,當然必須判斷底數不為0;

if(1 &tmp)

base = base * base

; tmp = tmp >> 1;

class

solution

if(exponent == 0

)

double res = 1.0

;

int tmp =abs(exponent);

while

(tmp)

base = base * base

; tmp = tmp >> 1

; }

if(exponent < 0

)

return

res;

}};

12 數值的整數次方

題目 給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。思路 很自然的會想到用迭代。但是也可以用二分法來解決問題,時間複雜度為o logn 個人覺得,這個題目最難的是有很多邊界問題需要考慮。public class solution els...

12 數值的整數次方

數值的整數次方 給定乙個double型別的浮點數base和乙個int型別的整數exponent。求base的exponent次方 思路 全面考察底數是否為0,以及指數的正負等邊界情況 求a的n次方 一種效率高的求法 當n為偶數時,a n a n 2 a n 2 當n為基數時,a n a n 1 2 ...

12 數值的整數次方

給定乙個 double 型別的浮點數 base 和 int 型別的整數 exponent,求 base 的 exponent 次方。下面的討論中 x 代表 base,n 代表 exponent。因為 x x n 2 可以通過遞迴求解,並且每次遞迴 n 都減小一半,因此整個演算法的時間複雜度為 o l...