一、題目描述
給定一個double類型的浮點數base和int類型的整數exponent。求base的exponent次方。
題目來源:數值的整數次方
二、題目解析
class Solution {
public:
double Power(double base, int exponent) {
/**
* 這道題的考點,我也不知道是什麼
* 難道是考察 pow 函數的使用?
*/
#if 0
double res = pow(base, exponent);
return res;
#endif
/**
* 或者考察我們的循環迭代?
*/
/* // 一段錯誤代碼
// 這樣的提交只能通過 40.00%的測試用例,
// 因爲指數 exponent 可能是負數
double res = base;
for(int i = 1; i < exponent; ++i)
{
res = res * base;
}
return res;
*/
/**
* 我們來觀察一下 3^-2 = 1/9 = 1 / 3^2
*/
if (exponent == 0)
{
// 浮點數據與0比較
if ((base >= -0.000001) && (base <= 0.000001))
{
return 0;
}
else
{
return 1;
}
}
bool negative = false;
if (exponent < 0)
{
negative = true;
exponent = -1 * exponent;
}
double res = base;
for (int i = 1; i < exponent; ++i)
{
res *= base;
}
if(negative)
{
return 1 / res;
}
else
{
return res;
}
}
};
如有問題歡迎評論區指出,謝謝大家:)