Math.pow用法及实现探究
Posted 一把刀
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Math.pow用法及实现探究相关的知识,希望对你有一定的参考价值。
pow函数在java.lang.Math类中,是求次方的函数,定义为:
public static double pow(double a, double b);
即求a的b次方,例如:
public static void main(String[] args) { double a = 2.0D; double b = 4.0D; double r = Math.pow(a, b); System.out.println(r); //输出为16.0 }
查看源码,发现其实现调用了StrictMath类的pow函数,并且,Math中很多函数都调是直接调用了StrictMath类中的函数,而在StrictMath类中方法用native修饰,表明调用的并非java代码,而是其它的。经了解,这里是C代码来实现这些方法的,而这些源码在jdk中并没有公布。
遂思考如何用java来实现呢?最先想到用循环和递归两种方式可实现。如下:
为简化逻辑实现,只考虑了自然数(0和正整数)次幂。
1、循环实现:
static int mypow(int x, int y) { if(y < 0){ return 0; } if(y == 0){ return 1; } if(y == 1){ return x; } int result = x; for (int i = 1; i < y; i++) { result *= x; } return result; }
2、递归实现:
static int mypow(int x, int y) { if(y < 0){ return 0; } if(y == 0){ return 1; } if(y == 1){ return x; } int result = 0; int tmp = mypow(x, y/2); if(y % 2 != 0) //奇数 { result = x * tmp * tmp; }else{ result = tmp * tmp; } return result; }
注:本文所述内容基于JDK1.7。
水平有限,上述观点难免有误,仅供参考。欢迎牛们拍砖!
以上是关于Math.pow用法及实现探究的主要内容,如果未能解决你的问题,请参考以下文章
为啥这段代码使用 Math.pow 打印“HELLO WORLD”?