java中整数的整数次方_数值的整数次方java
偶数 A(n) = A(n/2) * A(n/2)
奇数A(n) = A((n-1)/2) * A((n-1)/2)
指数为0或小于1 怎么办?
底数为0 时返回什么?
* 2 ^ 4 = 16 4D = 100B
* res = power(2,2) -> power(2,1) -> 2
* |
* res&1=1
* 2*2
* 4*4
*/
public class 数值的整数次方 {
public static double power(double num, int exp) {
if (exp < 0)//解决负数问题
return 1 / power(num, -exp);
if (exp == 0)
return 1;
if (exp == 1)
return num;
double res = power(num, exp >> 1);
res = res * res;
if ((exp & 1) == 1)
res = res * num;
return res;
}
public static void main(String[] args) {
System.out.println(power(2, 4));
System.out.println(power(2, -2));
}
}
用右移运算替代了除以2
用位与运算符替代了求余运算符(%)来判断奇偶
当需要对2的次幂进行求余时,可以是使用&运算符来代替
a/b的除数b必必须为2的n次方
使用位操作(&运算)代替求余操作
%运算:a%b
由于我们知道位运算比较高效,在某些情况下,当b为2的n次方时,有如下替换公式:
a % b = a & (b-1)(b=2n)
即:a % 2n = a & (2n-1)
例如:14%8,取余数,相当于取出低位,而余数最大为7,14二进制为1110,8的二进制1000,8-1 = 7的二进制为0111,由于现在低位全为1,让其跟14做&运算,正好取出的是其低位上的余数。1110&0111=110即6=14%8;(此公式只适用b=2n,是因为可以保证b始终只有最高位为1,其他二进制位全部为0,减去1,之后,可以把高位1消除,其他位都为1,而与1做&运算,会保留原来的数。)
参考
java中整数的整数次方_数值的整数次方java相关推荐
- java中整数的整数次方_数值的整数次方 - 剑指 Offer 学习心得_教程_Java开发社区...
数值的整数次方 代码实现: [java] view plaincopyprint? public class Test11 { /** * 实现函数double Power(double base, ...
- java中的Cookie是什么_第74节:Java中的Cookie和Session
第74节:第74节:Java中的Cookie和Session ServletContext: 什么是ServletContext,有什么用哦,怎么用呢? 启动服务器后,会给每个应用程序创建一个Serv ...
- java中date类型如何赋值_一文读懂java中的Reference和引用类型
简介 java中有值类型也有引用类型,引用类型一般是针对于java中对象来说的,今天介绍一下java中的引用类型.java为引用类型专门定义了一个类叫做Reference.Reference是跟jav ...
- java中i+=2什么意思_三分钟看懂Java中i++与++i的性能差别以及循环中如何使用
在Java中,自增是一种非常常见的操作,在自增中,有两种写法,一种是前缀自增(++i),一种是后缀自增(i++).这里主要简单介绍两种自增的差别. 一.含义差别 前缀自增和后缀自增是不同的.前缀自增( ...
- java中 exe是什么文件_从文件位置运行Java中的.exe文件
从文件位置运行Java中的.exe文件 我必须从我的Java程序打开一个.exe文件. 所以我试着下面的代码第一. Process process = runtime.exec("c:\\p ...
- java中整数的整数次方_数值的整数次方
题目: 实现函数Power(double base,int exponed),求base的exponed次方,不能使用库函数,不需要考虑大数问题. 输入: 输入一个浮点型数字和一个整数数字(不管正负) ...
- java中bubblesort是什么意思_排序--冒泡排序BubbleSort(Java)
原理简述 冒泡排序是最简单的排序算法之一,主要是通过不断交换相邻元素,实现排序. 简单例子 对[4,2,6,3,2,1]进行升序排序 第一遍(排出最大值) 1.png 第二遍(排出次大值) 2.png ...
- java中的随机生成算法_随机生成算法的java代码太复杂了
public static Integer[] generateRandomArray(int n, int rangeL, int rangeR) { assert rangeL <= ran ...
- java中 关于静态方法的定义_为什么我们不能在Java接口中定义静态方法?
从Java 8开始,Java接口中允许使用静态方法. 从Java 8开始,接口也可以具有静态帮助器方法.public interface vehicle { default void print() ...
最新文章
- Python构建基于elkan优化算法的K-Means聚类模型
- 浅谈sql中的in与not in,exists与not exists的区别以及性能分析
- 开发者如何谈判才能获得更高的薪水?
- Pr常见问题,如何找回不小心删除的视频音频
- hdoj1465错排公式的应用(递推)
- Masscan工具使用
- 情人节神奇的传情之物,“懂爱”的你都会爱上它丨情人节系列
- 安装VMware时,出现 安装程序无法继续 Microsoft Runtime DLL 安装程序未能完成安装,解决方法
- 服装制造业信息化系统分析(一)
- 报错Check constraint “book_chk_1“ is violated。难道MySQL中insert 语句只能一条一条插入?
- 论文导读|《Exploiting Rich Syntactic Information for Semantic Parsing with Graph-to-Sequence Model》
- noip普及组2007 守望者的逃离
- iOS - 监控键盘高度、屏蔽字符、限制字符个数
- 造个轮子,动手实现一个复杂场景的表格组件(UniApp)
- b与b不同(b和B的区别)
- OneNote快捷键大全
- 什么是Hibernate方言和方言列表
- html判断是否节假日,C# 判断是否是节假日
- http://www.dewen.net.cn/q/16042/jquery fadeIn和fadeOut问题
- JavaScript之美读书笔记一