首页 > 代码库 > Math.pow用法及实现探究
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用法及实现探究
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。