50.Pow(x,n)
实现 pow(x, n) ,即计算 x 的 n 次幂函数。
- 思路借鉴评论区大神:Wait想念
- 将xn转化为(x2)n/2再转化为((x2)2)n/4直到最外层幂指数为0。
- 要注意如果循环时n为奇数时,例如21到23不仅仅是平方的操作,而是(21)2*21,所以如果是奇数,在结果中乘上循环到的x本身。
class Solution {
public:
double myPow(double x, int n) {
if(n == 0) return 1.0;
double res=1.0;
for(int i = n;i != 0;i /= 2){
if(i % 2 != 0){
res *= x;
}
x *= x;
}
if(n < 0) return 1/res;
return res;
}
};
通过时间: