leetcode 50 值得再看一遍

来源:互联网 发布:有声自动阅读软件 编辑:程序博客网 时间:2024/06/05 13:30

写这个只适用于自己再次回顾的时候,方便查找

Implement pow(xn).

首先int的最小值是- ....48 而int的最大值是47 这个就意味着-..48的绝对值越界了,但是math.abs中负数最大值的绝对值还是负数,因此我考虑到相似可以用到-..46不能是-..47因为这样数字的符号方向就可能变了。还有就是int的最大值和最小值可以通过Integer.MAX_VALUE和Integer.MIN_VALUE获得。这些都是细节,技巧在于return值和迭代。默认返回值是0.0

public double myPow(double x, int n) {      double y=x; if(n==0){ return 1; }else{         if(n==Integer.MIN_VALUE){ n=n+2; } int abs=Math.abs(n); double temp=myPow(y,abs/2); if(abs%2==0){ y=temp*temp; }else{ y*=(temp*temp); } return n < 0 ? Math.max(1/y, 0.0):y; }    }