
剑指offer JZ12 数值的整数次方
发布日期:2021-05-07 13:14:26
浏览次数:16
分类:原创文章
本文共 882 字,大约阅读时间需要 2 分钟。
数值的整数次方
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0
思路
方法一: 正数直接累乘exp次就好了,负数取倒数累乘-exp次
public double Power(double base, int exp) { if(exp == 0) return 1.0; if(exp<0){ base = 1/base; exp = -exp; } double result = 1.0; for(int i=0;i<exp;i++){ result*=base; } return result;}
方法二:快速幂,也就是9的5次幂可分解为 81819,再用递归方式处理
public double Power(double base, int exp) { if(exp < 0){ //负指数转为正指数 base = 1/base; exp = -exp; } return power(base,exp); } public double power(double base, int exp){ if(exp == 0) return 1.0; double result; result = Power(base,exp/2); //先求出n/2次幂的结果 if((exp&1) == 1){ //奇数的判别 return result * result * base; }else return result * result; }
总结
1、快速幂:8次幂不需要累乘8次, 计算出4次幂的结果,再平方就好了
2、判断一个数是否为奇数,直接&1 就好了
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年03月27日 23时23分19秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Elasticsearch下载慢?分享百度云下载-ELK
2021-05-08
云服务器springboot jar项目开启jmx remote监控-解决无法连接的问题
2021-05-08
文件上传-FileUpload
2021-05-08
快速排序
2021-05-08
Pyinstaller打包的exe文件过大的解决方法
2021-05-08
Linux的软链接跟Windows快捷方式一样?
2021-05-08
更改github的默认语言类型
2021-05-08
使用bigdecima实例化时传int和string时的精度丢失
2021-05-08
使用第三方sdk,微信wechat扫码登录
2021-05-08
mysql中的行转列
2021-05-08
java8中的闭包Function/BiFunction
2021-05-08
flink —— checkpoint机制
2021-05-08
shell脚本中冒泡排序、直接排序、反转排序
2021-05-08
WPS及Excel中Alt键的妙用 快捷键
2021-05-08
C - 食物链 并查集
2021-05-08
Pycharm 常用快捷键
2021-05-08
基于Altium Designer的电子设计的入门指南
2021-05-08
基于LabVIEW的入门指南
2021-05-08