Offer_50 快速幂算法
实现 pow(x, n) ,即计算 x
的 n
次幂函数(即,xn
)。
思路分享:判断n是否为0,然后判断n是或否为偶数,保存x的n/2的次方,如果n为偶数,直接返回t*t,如果为奇数,判断n是否小于0,小于的话,返回1/x* t*t,否则返回t* t * x;
class Solution { public double myPow(double x, int n) { if (n == 0){ return 1; } // 快速幂算法实现,有没有更快的算法实现x的n次方呢 double t = myPow(x, n / 2); if ((n & 1) == 0) { return t * t; } else { return (n > 0 ? x : 1.0 / x) * t * t; } }
// 非递归写法
public double myPow01(double x, int n) {
if (n == 0){
return 1;
}
// 快速幂算法实现,有没有更快的算法实现x的n次方呢
double res = 1.0;
for (int i = n; i != 0; i / 2) {
if (i % 2 != 0) res *= x;
x *= x;
}
return n < 0 ? 1 / res : res;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步