美文网首页
12:数值的整数次方

12:数值的整数次方

作者: iwtbam | 来源:发表于2019-08-03 16:39 被阅读0次

题目描述

  • 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

解题思路

  • 快速幂:指数为整数,可以表达为二进制的形式比如,5=> 101, 105=1022 + 1020,利用这个特性,我们可以在log(n)复杂度内计算除一个整数幂的值。
  • 注意负指数

AC代码

class Solution {
public:
    double Power(double base, int exponent) {
        
        double ans = 1.0;
        int flag = exponent >= 0 ? 1 : -1;
        exponent = flag * exponent;
        while(exponent)
        {
            if(exponent & 1)
                ans *= base;
            base *= base;
            exponent >>= 1;
        }
        
        if(flag == -1)
            ans = 1.0 / ans;
        return ans;
    }
};

相关文章

网友评论

      本文标题:12:数值的整数次方

      本文链接:https://www.haomeiwen.com/subject/axnjdctx.html