實現函式double power(double base, int exponent),求base的exponent次方。不得使用庫函式,同時不需要考慮大數問題。來自:leetcode題解示例 1:
輸入: 2.00000, 10
輸出: 1024.00000
示例 2:
輸入: 2.10000, 3
輸出: 9.26100
示例 3:
輸入: 2.00000, -2
輸出: 0.25000
解釋: 2-2 = 1/22 = 1/4 = 0.25
說明:-100.0 < x < 100.0
n 是 32 位有符號整數,其數值範圍是 [−231, 231 − 1] 。
因為在說之前看過leetcode的題解了,所以就敲了一遍熟悉一下
需要注意的是當指數為最小負數時,如果取正會發生溢位,所以我就將指數的長度擴大,從int的4個位元組擴大到long的8個位元組
大致思路:
首先得先分析情況,根據題目,底數可正可負可0,指數也一樣;
我們得對指數為負數的情況進行判斷,如果指數為負數,底數就得取倒數,然後指數取正,同時也得考慮底數為0的情況;
在前面對一些條件進行處理後,便可以進行快速冪了,以x= 2, n= 10為例;
result首先置為1;
第一次迴圈,指數10為偶數,所以x= x* x= 2* 2= 4, n= 10/ 2= 5,也就是x^10= (x^2)^5;
第二次迴圈,指數5為奇數,所以result= result* x= result* 4,n= n/ 5= 2,也就是轉換成了x^10= x^2* (x^2)^4;
以此類推,直到指數為0.
(因為快速冪是將底數不斷的平方,所以得對指數為奇數的時候進行分離處理)
class solution
// 快速冪計算
double result= 1;
while(nn> 0)
return result;
}};
數值整數次方
題目 實現函式double power double base,int exponent 求base的exponent次方。不得使用庫函式,同時不需要考慮 大數問題。includebool equal double num1,double num2 double powerwithunsignede...
數值整數次方
題目 實現函式double power double base,int exponent 求base的exponent次方。不得使用庫函式,同時不需要考慮 大數問題。includebool equal double num1,double num2 double powerwithunsignede...
數值的整數次方
題目 實現函式double power double base,int exponent 求base的exponent次方。不得使用庫函式,同時不需要考慮大樹問題。這道題目有以下幾點需要注意 0的0次方是無意義的,非法輸入 0的負數次方相當於0作為除數,也是無意義的,非法輸入 base如果非0,如果...