def my_pow(x,n):
if n==0: return 1
if n<0: return 1/my_pow(x,-n)
if n%2==0: return my_pow(x*x,n//2)
return x*my_pow(x,n-1)
public double myPow(double x,int n){
if(n==0) return 1;
if(n<0) return 1/myPow(x,-n);
if(n%2==0) return myPow(x*x,n/2);
return x*myPow(x,n-1);
}
Fast power. Python handles negatives cleanly. Java needs explicit double type.
def my_pow(x,n):
if n==0: return 1
if n<0: return 1/my_pow(x,-n)
if n%2==0: return my_pow(x*x,n//2)
return x*my_pow(x,n-1)
public double myPow(double x,int n){
if(n==0) return 1;
if(n<0) return 1/myPow(x,-n);
if(n%2==0) return myPow(x*x,n/2);
return x*myPow(x,n-1);
}
1. Base: n==0 -> 1 2. Negative: reciprocal 3. Even: square x halve n