給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。
首先要把所有的情況都考慮在內,比如基數和指數為0的情況,指數為負數的情況。
然後說一下一種比較優的思路,比如乙個數的32次方,它與這個數16次方的平方相等,依次類推,求乙個數的32次方只需做5次乘方,先求平方,平方的基礎上求四次方,在四次方基礎上求八次方,在八次方基礎上求十六次方,在十六次方基礎上求三十二次方。
可以總結為公式: an = a(n/2)*a(n/2) n為偶數
an = a(n-1/2)*a(n-1/2)*a n為奇數
而n/2使用右移運算子
public double power(double base, int exponent)
double res =1.0;
double odd = base;
int n = exponent;
if(exponent<0)
while(n != 0)
odd *= base; //指數為偶數,
n >>= 1;
}return exponent>0 ? res:(1/res);
}
需要注意的一點,n & 1是判斷n奇偶,等於0為偶數,等於1為奇數,上面最後乙個迴圈的**實現了上面的公式。 每天一道劍指Offer 30
date 2020 7 18 連續子陣列的 最大和 注意 子陣列的起點不一定是0 hz偶爾會拿些專業問題來忽悠那些非計算機專業的同學。今天測試組開完會後,他又發話了 在古老的一維模式識別中,常常需要計算連續子向量的最大和,當向量全為正數的時候,問題很好解決。但是,如果向量中包含負數,是否應該包含某個...
每天一道劍指offer 表示數值的字串
考試結束,班級平均分只拿到了年級第二,班主任於是問道 大家都知道世界第一高峰珠穆朗瑪峰,有人知道世界第二高峰是什麼嗎?正當班主任要繼續發話,只聽到角落默默響起來乙個聲音 喬戈里峰 每天一道劍指offer 表示數值的字串 請實現乙個函式用來判斷字串是否表示數值 包括整數和小數 例如,字串 100 5e...
每天一道劍指offer 翻轉單詞順序列
牛客最近來了乙個新員工fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事cat對fish寫的內容頗感興趣,有一天他向fish借來翻看,但卻讀不懂它的意思。例如,student.a am i 後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是 i am a student....