給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。
思路:錯誤的輸入怎麼返回呢?可以使用方法有三種:
錯誤的輸入是0的負指數次冪,此時我們要通過乙個全域性變數告訴函式的呼叫者輸入引數出現了問題;還有乙個無意義的輸入:0的0次冪,此時我們定義它返回0.0。無論是正數還是負數的次方運算,迴圈次數為abs(exponent),最後如果exponent小於0取倒數就可以了。
bool g_is_valid_input = true;
class solution
if(base == 0.0 && exponent == 0) return 0.0;
double res = 1.0;
for(int i = 0;i遞迴的方法實現:o(logn)
用右移運算子替代了除以2,用位與運算子代替了求餘運算子%來判斷乙個數是奇數還是偶數。
bool g_invalidinput = false;
class solution
if(base == 0 && exponent == 0) return 0.0;
double result = computethepower(base,abs(exponent));
if(exponent<0) return 1.0/result;
else return result;
}double computethepower(double base,int exponent)
};
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...