Fork me on GitHub

剑指Offer之数值的整数次方

题目描述:

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

解题思路一:

1
2
3
4
5
6
7
8
9
class Solution {
public:
double Power(double base, int exponent) {

base = pow(base, exponent);

return base;
}
};

解题思路二:

时间复杂度:$O(n)$, 空间复杂度:$O(1)$.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution {
public:
double Power(double base, int exponent) {
if(exponent == 0) return 1.0;
// 判断exponent是正数还是负数
int sign = exponent < 0 ? 1:0;
exponent = abs(exponent);
int res = base;

while(--exponent)
{
base *= res;
}
// 如果是负数,要求倒数
if(sign) base = 1 / base;

return base;
}
};