《剑指Offer》-16-数值的整数次方
将 n 次相乘的幂运算转化为 log2N 次平方运算,并且采用递归算法
原书给出的最优算法本身不处理负数,是外层函数处理的
double myPow(double x, int n) { double res = pow(x, abs(n)); if (n < 0)res = 1 / res; return res; } double pow(double x, int n) { if (n == 0)return 1;// 不管是奇数还是偶数,最终移位运算会得到0,也就是n最终=0 // 这里我们是用移位运算替代了/2运算 // if (n == 1)return x; double res = myPow(x, n >> 1);// 自顶向下分解为 log2n 次平方操作 res *= res;// 自底向上平方 log2n次 // 比如3和2都是右移1次变成1,两次变成0,所以最后对于奇数次的情况需要补一次,同时也是最外层的底数本身 if (n & 1)res *= x; return res; }
本文作者:YaosGHC
本文链接:https://www.cnblogs.com/yaocy/p/17637647.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
分类:
标签:
,
,
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2022-08-17 力扣-15-三数之和