题目描述

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
 
保证base和exponent不同时为0
 
 
 
题目链接:

 

 

分析:

快速幂。

11的二进制1011=1+2+8

2^11 = 2(^(1+2+8))=2^1+2^2+2^8

 

 

 

 1 public class Solution {
 2     public double Power(double base, int exponent) {
 3         double num = 1;
 4         int flag = 1;
 5         if(exponent < 0){
 6             flag = -1;
 7             exponent = -exponent;
 8         }
 9         double nb=base;
10         while(exponent != 0){
11             //有1的位置,将数值乘到结果中
12             if((exponent&1)==1){
13                 num*=nb;
14             }
15             //下一个位置数值的大小,
16             nb*=nb;
17             exponent>>=1;
18         }
19         if(flag == -1){
20             return 1/num;
21         }
22         return num;
23   }
24 }

 

posted on 2020-06-05 02:12  MoonBeautiful  阅读(205)  评论(0编辑  收藏  举报