题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
提交链接:点击
思路:利用快速幂的方法!O(logn)时间复杂度
代码:
//普通方法 累乘,时间复杂度为O(n) class Solution { public: double Power(double base, int exponent) { double result=1; int re; if(exponent<0) re=-exponent; else re=exponent; for(int i=0;i<re;i++){ result*=base; } if(exponent<0) result=1/result; return result; } }; //快速幂方法 base^11拆分为 base^1 * base^2 * base^8求解!! 具体可参考这篇博客 class Solution { public: double Power(double base, int exponent) { int re; if(exponent<0) re=-exponent; else re=exponent; //判断是否为负数 double result=1; while(re!=0){ if(re&1!=0) result=result*base; base=base*base; re=re>>1; } return exponent<0 ? 1/result : result; } };