Pow(x, n)
Implement pow(x, n).
思想:二分法,注意n为负数的情况
- public double pow(double x, int n) {
- if(n==0) return 1;
- if(n==1) return x;
- double k = pow(x,Math.abs(n/2));
- if(n>0) {
- if(n%2==1) {
- return k*k*x;
- }else {
- return k*k;
- }
- }else {
- if((-n)%2==1) {
- return 1.0/(k*k*x);
- }else {
- return 1.0/(k*k);
- }
- }
- }
注: 在java和python中-3%2==-2为偶数,而在C++和shell和-3%2为奇数,所以要留意负数的模运算,不同的语言实现不同;因此最好都用正数来求模运算。