题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0
示例1
返回值
复制8.00000
思路:
可以循环暴力,但是更节省时间的方法还是快速幂
通过每次迭代时将计算规模折半,从而使时间复杂度压缩至log2(n)
代码实现时需注意指数的正负
class Solution { public: double Power(double base, int exponent) { if (exponent == 0) return 1; bool op; if(exponent < 0) op = false; else op = true; return Pow(base,exponent,op); } double Pow(double base, int exp,bool op) { double ans = 1; while(exp) { if(exp % 2) { ans *= base; } base *= base; exp /= 2; } if(op) return ans; else return 1/ans; } };