Pow(x,n)--LeetCode

来源:互联网 发布:苹果手机上的编程软件 编辑:程序博客网 时间:2024/04/28 02:58

题目:

实现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;}


0 0
原创粉丝点击