首页 > 其他 > 详细

剑指offer-数值的整数次方

时间:2020-06-05 09:44:54      阅读:37      评论:0      收藏:0      [点我收藏+]

题目描述

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

 

剑指offer-数值的整数次方

原文:https://www.cnblogs.com/MoonBeautiful/p/13047517.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!