博客
关于我
剑指offer JZ12 数值的整数次方
阅读量:343 次
发布时间:2019-03-04

本文共 827 字,大约阅读时间需要 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

方法二:快速幂,也就是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 就好了

转载地址:http://srle.baihongyu.com/

你可能感兴趣的文章
使用async、await改善异步代码
查看>>
js-禁止右键菜单代码、禁止复制粘贴代码
查看>>
Redis (三)——Linux 上安装 Redis
查看>>
java 多态类型转换
查看>>
JAVA带标签的break和continue
查看>>
(C++11/14/17学习笔记):线程启动、结束,创建线程多法、join,detach
查看>>
HTML 和 CSS 简单实现注册页面
查看>>
趣谈win10常用快捷键
查看>>
IDEA出现问题:Received fatal alert: protocol_version 解决方案
查看>>
Airtest自动化测试 Docs airtest.core.android package
查看>>
11.2.6 时间值的小数秒
查看>>
Redis源码分析(七)--- zipmap压缩图
查看>>
【MySQL】(九)触发器
查看>>
Oracle 11G环境配置
查看>>
【Python】(十二)IO 文件处理
查看>>
【Oozie】(三)Oozie 使用实战教学,带你快速上手!
查看>>
师兄面试遇到这条 SQL 数据分析题,差点含泪而归!
查看>>
C语言的数值溢出问题(上)
查看>>
8051单片机(STC89C52)以定时器中断模式实现两倒计时器异步计时
查看>>
vue项目通过vue.config.js配置文件进行proxy反向代理跨域
查看>>