Pow(x,n)--LeetCode Love The Way You Lie 2022-08-05 13:29 69阅读 0赞 题目: 实现pow() 思路:使用二分法,不过这道题用递归来解比较容易理解,把x的n次方划分成两个x的n/2次方相乘,然后递归求解子问题,结束条件是n为0返回1。因为是对n进行二分,算法复杂度和上面方法一样,也是O(logn)。代码如下: #include <iostream> #include <vector> using namespace std; double pow(double x, int n) { if (n == 0) return 1.0; double half = pow(x, n/2); if (n%2 == 0) { return half*half; } else if (n>0) { return half*half*x; } else { return half/x*half; } } int main() { cout<<pow(2,-2); return 0; }
还没有评论,来说两句吧...