Please enable Javascript to view the contents

剑指office(十二)数值的整数次方

 ·  ☕ 1 分钟  ·  🎅 YSL

题目描述

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

保证base和exponent不同时为0。不得使用库函数,同时不需要考虑大数问题,也不用考虑小数点后面0的位数。

示例1

输入

2.00000,3

返回值

8.00000
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
class Solution {
public:
    double Power(double base, int exponent) {
        if(exponent == 0)
            return 1.0;
        else 
        {
            double result = 1;
            for(int i= 0;i<abs(exponent);i++)
                result *= base;
            if(exponent > 0)
                return result;
              else
                return 1/result;
        }
    }
};
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Solution {
public:
    double Power(double base,int exponent)
    {
        if(exponent<0)
        {
            exponent = -exponent;
            base = 1/base;
        }
        return q_power(base,exponent);
    }
    double q_power(double base, int exponent) {
        if(exponent == 0)
            return 1.0;
        else 
        {
             double result = q_power(base, exponent/2);
            if(exponent&1)
            {
                return result*result*base;
            }
            else
            {
               return result * result;
            }
        }
    }
};
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Solution {
public:
    double Power(double base,int exponent)
    {
        if(exponent<0)
        {
            exponent = -exponent;
            base = 1/base;
        }
        return q_power(base,exponent);
    }
   double q_power(double base,int exponent)
   {
       double result = 1;
       while(exponent)
       {
           if(exponent&1)
           {
               result *= base; 
           }
           base *= base;
            exponent>>=1;
       }
       return result;
   }
};