题目
实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,)。不得使用库函数,同时不需要考虑大数问题。
题目分析
1、实现一个数的n次方,不调用库函数。
2、如果使用平常递归或者循环,当n的值过大时,会导致内存栈溢出。
3、使用快速幂,解决栈溢出问题的同时能将时间复杂度降低到
知识点分析
快速幂:
1、更新:每次让
2、更新:①使用 &1 判断二进制最后一位是否为1
②每次将
例
class Solution{
public double myPow(double x, int n){
//如果x为0,则直接返回结果
if(x == 0) return 0;
long b == n;
//用于存储最终结果
double res = 1.0;
//如果n为负数,将其转换为正数,方便后续计算
if(b < 0){
x = 1/x;
b = -b;
}
//快速幂实现
while(b > 0){
//如果b为奇数,则将结果存入res
if((b & 1) == 1) res *= x;
//将x平方赋值给x
x *= x;
//右移b
b >>= 1;
}
//返回结果
return res;
}
}