Pow(x, n)

Implement pow(xn).

 

思想:二分法,注意n为负数的情况

  1. public double pow(double x, int n) {
  2. if(n==0) return 1;
  3. if(n==1) return x;
  4. double k = pow(x,Math.abs(n/2));
  5. if(n>0) {
  6. if(n%2==1) {
  7. return k*k*x;
  8. }else {
  9. return k*k;
  10. }
  11. }else {
  12. if((-n)%2==1) {
  13. return 1.0/(k*k*x);
  14. }else {
  15. return 1.0/(k*k);
  16. }
  17. }
  18. }

注: 在java和python中-3%2==-2为偶数,而在C++和shell和-3%2为奇数,所以要留意负数的模运算,不同的语言实现不同;因此最好都用正数来求模运算。

 

posted @ 2014-06-23 23:37  purejade  阅读(92)  评论(0编辑  收藏  举报