day13(数值的整数次)

题目描述

给定一个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;
    }
};

非学无以广才,非志无以成学! 【Magic_chao

原文地址:https://www.cnblogs.com/logo-88/p/9691622.html