1 题目描述
Implement ref
=“
http://www.cplusplus.com/reference/valarray/pow/“>pow(x, n).
难度:Medium
2 题目样例
Example 1:
Input: 2.00000, 10
Output: 1024.00000
Example 2:
Input: 2.10000, 3
Output: 9.26100
3 题意分析
实现幂函数。
4 思路分析
快速幂,具体思路不再多说了,随便搜都有一大把。
但是这里有一个扩展阅读很有意思
计算机是怎样进行开方和幂运算的? www.zhihu.com
所以说pow应该是可以利用机器指令在 时间内算出的。
快速幂代码如下
class Solution {
public:
double _pow(double x, long long n){
if(n==0)
return 1;
if(n==1)
return x;
if(n&1)
return x * _pow(x, n-1);
else{
double tp = _pow(x, n/2);
return tp*tp;
}
}
double myPow(double x, int n) {
long long tp = n;
if(tp<0)
return 1/_pow(x, -tp);
return _pow(x, tp);
}
};
整体时间复杂度 ,空间复杂度
5 后记
这道题并不重要,但是相比之下知道了计算机内pow可以是O(1)实现还是比较震惊的。