快速求幂函数
自定义pow(x,n);
二分法思想:每次累乘,当前的i为偶数时,x自身累乘将累乘的x数减半,当前i为奇数时,将当前结果res乘以x,剩下的x累乘的个数为偶数,x再累乘将其累乘数减半,直到为0,返回结果res,时间复杂度可以从遍历累乘的O(n)降低到O(logn)
double MyPow(double x,int n)
{
double res = 1;
for(int i = n;i!=0;i/=2)
{
//如果当前i为奇数,就乘以x本身,乘过之后,剩余还需乘的x个数为偶数
if(i%2==1)
res*=x;
//此时的i为偶数,x*x将剩余的x要乘的个数减半
x*=x;
}
return res;
}