题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
时间限制:1秒 空间限制:32768K 热度指数:323693
思路
直接循环
运行时间:3ms
占用内存:484k
class Solution {
public:
double Power(double base, int ex) {
int t=ex>0?ex:-ex;//判断是否为正指数幂
double tt=1;
for(int i=0;i<t;i++)
{
tt=tt*base;
}
return ex>0?tt:1/tt;//若为负则反过来
}
};
参考他人代码
简单快速幂,对指数的二进制,每一位判断是否为1,若是,则*上相应的base次方
class Solution {
public:
double Power(double base, int ex) {
int t=ex>0?ex:-ex;
double tt=1;
while(t>0)
{
if(t&1)
tt*=base;
base*=base; //此时base应变为原来的二次幂
t=t>>1;
}
return ex>0?tt:1/tt;
}
};