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

分析:

* 要注意以下几点:
* 1.幂为负数时,base不能为0,不然求的时候是对0取倒数,会发生除0异常。
* 2.0的0次幂无意义,无特殊说明,一般来说是1。
public double power(double base, int exponent) {
if (exponent == 0) {
return 1.0;
}
if (exponent == 1) {
return base;
}
if (Double.compare(base, 0.0) == 0 && exponent < 0) {
throw new ArithmeticException(" / by 0");
}
int flag = exponent < 0 ? -exponent : exponent;
double result = base;
while (flag > 1) {
result *= result;
if ((flag & 1) == 1) {
result *= base;
}
flag = flag >> 1;
}
return (exponent < 0) ? 1 / result : result;
}

剑指Offer(书):数值的整数次方的更多相关文章

  1. 《剑指offer》 数值的整数次方

    本题来自<剑指offer> 数值的整数次方 题目: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 思路: 代码从三个方面处 ...

  2. 【剑指Offer】数值的整数次方 解题报告(Python)

    [剑指Offer]数值的整数次方 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://www.nowcoder.com/ta/coding-interviews ...

  3. (3)剑指Offer之数值的整数次方和调整数组元素顺序

    一 数值的整数次方 题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 问题解析: 这道题算是比较麻烦和难一点的一个了.我这里采 ...

  4. 【Java】 剑指offer(15) 数值的整数次方

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 实现函数double Power(double base, int ...

  5. 【剑指offer】数值的整数次方

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/mmc_maodun/article/details/25506085 转载请注明出处:http:// ...

  6. Go语言实现:【剑指offer】数值的整数次方

    该题目来源于牛客网<剑指offer>专题. 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 保证base和exponent不 ...

  7. 剑指 Offer 16. 数值的整数次方

    实现函数double Power(double base, int exponent),求base的exponent次方.不得使用库函数,同时不需要考虑大数问题. 来源:力扣(LeetCode) 链接 ...

  8. 剑指OFFER之数值的整数次方(九度OJ1514)

    题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 输入: 输入可能包含多个测试样例.对于每个输入文件,第一行输入一个整数T,表 ...

  9. 剑指Offer 12. 数值的整数次方 (其他)

    题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 题目地址 https://www.nowcoder.com/practice/ ...

  10. 剑指offer:数值的整数次方

    题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 解题思路: 一开始直接用一个for循环做连乘,测了一下,发现这个指数可能是负 ...

随机推荐

  1. Cloudera Manager是啥?主要是干啥的?

    简单来说,Cloudera Manager是一个拥有集群自动化安装.中心化管理.集群监控.报警功能的一个工具(软件),使得安装集群从几天的时间缩短在几个小时内,运维人员从数十人降低到几人以内,极大的提 ...

  2. 最短路之Dijkstra(迪杰斯特拉)

    一般用法: Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.Dijkstra算法是很有代 ...

  3. iOS NSUserDefaults [setValue:forKey:] [setObject:forKey:] <Objc> setValue(_,forKey:) set(_,forKey) <Swift 3>

    前者其实是NSObject都可以调用的KVC方法,后者才是NSUserDefaults的实例方法: 这里参数的类型是nullable id,但是我建议你在传null的时候慎重考虑,否则你的应用就可能面 ...

  4. 双端队列 HDOJ 3530 Subsequence

    题目传送门 题意:问最长子序列,满足区间最大值 - 最小值在[m, k]之间 分析:用双端队列维护最大值和最小值,保存的是位置.当满足条件时,更新最大值. /********************* ...

  5. ES6中的Rest参数和默认参数

    ES6中的Rest参数和默认参数 Rest参数 一个例子 编写一个函数, 用来判断, 某个字符串中, 是否其他的字符串, 如果第一参数以后的字符串, 都包含在第一参数中, 都包含在, 就返回true ...

  6. 万能makefile模板

    这里一份万能makefile模板,写opencv项目时候使用的. 前提是提前配置好 包管理工具 pkg 然后就不用每次都去 -lopencv_xxx了. ####################### ...

  7. 486 Predict the Winner 预测赢家

    给定一个表示分数的非负整数数组. 玩家1从数组任意一端拿取一个分数,随后玩家2继续从剩余数组任意一端拿取分数,然后玩家1拿,…….每次一个玩家只能拿取一个分数,分数被拿取之后不再可取.直到没有剩余分数 ...

  8. AWK整理

    处理模式: awk的处理文本和数据的方式是这样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想要的操作.如果没有指定处理动作,则把匹配的行显示到标准输出(屏幕),如 ...

  9. Vue checkbox默认值改变

    <label><input  v-bind:true-value="1" v-bind:false-value="0" type=" ...

  10. re正则表达式公式讲解3

    1.分组匹配    用()把需要分组的类型括起来,如下 import re m = re.search("([a-z]+)([0-9]+)","alex123" ...