码迷,mamicode.com
首页 > 其他好文 > 详细

【剑指offer12数值的整数次方】

时间:2020-06-14 12:34:45      阅读:61      评论:0      收藏:0      [点我收藏+]

标签:desc   int   浮点数   快速幂   不同   标记   while   base   ase   

题目描述

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
 
保证base和exponent不同时为0
 
解:
浮点数的次方也是拿着移位运算
cur=底数  指数按位&1 ?乘:不乘   cur乘倍  指数右移位
另外判断一下指数exponent的正负,返回倒数否
class Solution {
public:
    double Power(double base, int exponent) {
        if(base == 0)return 0;
        if(exponent == 0 )return 1;
        double ans = 1;
        int cur = base ;
        int flag = 0 ;
        if(exponent<0){
            flag = 1 ;//负数标记
            exponent = -exponent ;
        }
        //快速幂运算
        while(exponent>0){
            if((exponent&1)==1){
                ans*=cur;
            }
            cur*=cur; exponent = exponent>>1;
        }
        
        if(flag)ans = 1/ans ;
        return ans ;
    }
};

 

【剑指offer12数值的整数次方】

标签:desc   int   浮点数   快速幂   不同   标记   while   base   ase   

原文地址:https://www.cnblogs.com/Stephen-Jixing/p/13124127.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!