版权声明:转载请注明出处!欢迎大家提出疑问或指正文章中的错误! https://blog.csdn.net/pyuxing/article/details/89879846
1-Description
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方
2-Solution
这里注意的是需要考虑指数小于0以及底数为0的情况,所以在写代码的时候要尽量保证代码的全面性,下面是解决代码
class Solution {
public:
double Power(double base, int exponent) {
double result = 1;
if(exponent > 0){
for(int i = 1; i <= exponent; ++i){
result = result * base;
}
}
else if(exponent < 0){
for(int i = 1; i <= -exponent; ++i){
result = result * base;
}
result = 1.0 / result;
}
return result;
}
};
注意到求a的n次方可以使用如下的公式:
而这一公式显然是可以用递归来实现的,所以可以得到如下的代码:
class Solution {
public:
double Power(double base, int exponent) {
if(exponent < 0) {
base = 1/base;
exponent *= -1;
}
if(exponent == 0) return 1;
if(exponent == 1) return base;
double result = Power(base,exponent >> 1);//右移运算符代替exponent除以2
result *= result;
if(exponent & 0x01 == 1) result *= base;//位于运算符代替求余运算符(%)判断奇偶
return result;
}
};
PS:公众号上线啦,技术干货分享,欢迎关注。