【蓝桥杯】快速幂运算

模板代码

public static int ex(int a,int n){if(n==1){return a;}int res=1;int exponent=1;int temp=a;while((exponent<<1)<n){temp=temp*temp;exponent=exponent<<1;}res=res*ex(a,n-exponent);return res*temp;
}

升级版(可以判断负几次方)

class Solution {public double myPow(double x, int n) {if(n<0) {n=-n;if(n==1) {return 1/x;}double res=1;double temp=1/x;int exponent=1;while((exponent<<1)<n) {temp=temp*temp;exponent=exponent<<1;}res=res*myPow(1/x,n-exponent);return res*temp;}else {if(n==1) {return x;}double res=1;double temp=x;int exponent=1;while((exponent<<1)<n) {temp=temp*temp;exponent=exponent<<1;}res=res*myPow(x,n-exponent);return res*temp;}}
}

剑指 Offer 16. 数值的整数次方

使用升级版的代码可以通过300的测试案例,还有几个会超时,将会继续学习优化