👉 題目來源:數值的整數次方
題目描述
給定一個double類型的浮點數base和int類型的整數exponent。
求base的exponent次方。
保證base和exponent不同時爲0
思路:
- 暴力解法
- 二分法
代碼
- C++
/**
* 暴力解法
* 時間複雜度O(N)
*/
#include<cstdlib>
class Solution {
public:
double Power(double base, int exponent) {
if(base == 0)
return 0;
else if(exponent == 0)
return 1;
else if(exponent > 0){
double sum = 1;
for(int i = 0 ; i < exponent; i++)
sum *= base;
return sum;
}
else{
double sum = 1;
for(int i = 0 ; i < fabs(exponent); i++)
sum *= base;
return 1/sum;
}
}
};
- Java
/**
* 二分法
* 時間複雜度O(logN)
*/
public class Solution {
public double Power(double base, int exponent) {
boolean isNegative = (exponent < 0); //是否爲負數
if(base == 0)
return 0;
else if(exponent == 0)
return 1;
else{
double temp = Power(base, Math.abs(exponent)/2);
if(exponent%2 == 0) //偶數
return isNegative ? 1/(temp*temp) : temp*temp;
else // 奇數
return isNegative ? 1/(temp*temp*base) : temp*temp*base;
}
}
}