题目链接:数值的整数次方
题目描述:实现 pow(x, n) ,即计算 x 的 n 次幂函数。不得使用库函数,同时不需要考虑大数问题。
分析:这道题要计算x的n次幂函数,最直接的想法是用循环求解。但是暴力循环是会超时的,所以要想办法减少循环的次数。
如果n是偶数,那么x的n次方等于x的2*n/2次方,即等于x*x的n/2次方。如果n/2是偶数的话,就等于x*x*x*x的n/4次方,以此类推,可以将时间复杂度从O(n)降为O(log 2 n)。
代码如下:
// 减少循环的次数
var myPow = function(x, n) {
let res=1;
if(n==0)
return 1;
while(n>0){
if(n%2==0){
x*=x;
n=n/2;
}
res*=x;
n--;
}
while(n<0){
if(n%2==0){
x*=x;
n=n/2;
}
res*=1/x;
n++;
}
return res;
};