前言
本题由于是大数,当然最简单无敌的办法就是Math库哈哈哈,还可以采用递归和迭代,递归中分n是奇数或者偶数,迭代就是n二进制中1的个数的地方需要得到x的贡献度。
题目
源码
嗯,最快的其实是math库哈哈哈哈
class Solution {
public double cal(double x,long n ){
// 递归法1
// if (n==0){
// return 1.0;
// }
// double y=cal(x,n/2);
// return n%2==0?y*y:y*y*x;
// 迭代法2
double ans=1.0;
double x_c=x;
while(n!=0){
if((n&1)==1){
ans *=x_c;
}
x_c *= x_c;
n>>=1;
}
return ans;
}
public double myPow(double x, int n) {
// 终极大法1
// return Math.pow(x,n);
long N=n;
return N>=0 ? cal(x,N):1/cal(x,-N);
}
}