剑指Offer16.数值的整数次方
题目链接:数值的整数次方
思路:二分法。对幂次方进行二分,但需要考虑次方运算的特殊情况,这儿,0次方结果都为0,底数为1时结果都为1。
代码:
class Solution {
public double myPow(double x, int n) {
if(x == 1 || x == 0) return x;
if(n == 0) return 1;
return helper(n < 0 ? 1 / x : x, n < 0 ? -1 * (long)n : (long)n);
}
private double helper(double x, long exp){
if(exp == 1) return x;
double t = helper(x, exp>>1);
return (exp & 1) == 1 ? t * t * x : t * t;
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步