12 數值的整數次方

2021-08-21 03:28:18 字數 681 閱讀 6086

/*數值的整數次方*/

/*給定乙個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)*a^((n-1)/2)*a。

(解釋:假如我們要求3的16次方,那麼先求3的平方(3*3得到3^2),在平方的基礎上求4次方(3^4=3^2*3^2),在4次方的基礎上求8次方(3^8=3^4*3^4)在8次方的基礎上求16次方(3^16=3^8^3*8)。這樣一種乘了4次,而16個3相乘一共乘了15次。)

1:如果a為0,那麼結果為0;

2:當a不為0時:

1)指數n為0,則結果為1,

2)指數n不為0,先求指數的絕對值,再判斷n的正負:當n為偶數:a^n = a^(n/2)*a^(n/2),當n為奇數:a^n = a^((n-1)/2)*a^((n-1)/2)*a。指數n大於0,那麼:直接返回;   指數小於0,那麼先求倒數,再返回。

3:用右移運算子代替了除以2;用位與運算子代替了其餘運算子(%),來判斷乙個數是奇數還是偶數,高效。

class solution 

};

12 數值的整數次方

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

12 數值的整數次方

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

12 數值的整數次方

給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。思路 錯誤的輸入怎麼返回呢?可以使用方法有三種 錯誤的輸入是0的負指數次冪,此時我們要通過乙個全域性變數告訴函式的呼叫者輸入引數出現了問題 還有乙個無意義的輸入 0的0次冪,此時我們定義它返...