标签:leetcode c++ divide-and-conquer
Pow(x, n)
Implement pow(x, n).
//vs2012测试代码 //divide-and-conquer //classic #include<iostream> using namespace std; class Solution { public: double pow(double x, int n) { double half; if(n==0) return 1.0; if(n>0) { half = pow( x , n/2 ); if(n%2==0) return half*half; else return half*half*x; } else { n = -n; half = pow( x , n/2 ); if(n%2==0) return 1.0/(half*half); else return 1.0/(half*half*x); } } }; int main() { double x; int n; cin>>x; cin>>n; Solution lin; cout<<lin.pow(x,n)<<endl; }
//方法一:自测Accepted //divide-and-conquer //classic class Solution { public: double pow(double x, int n) { double half; if(n==0) return 1.0; if(n>0) { half = pow( x , n/2 ); if(n%2==0) return half*half; else return half*half*x; } else { n = -n; half = pow( x , n/2 ); if(n%2==0) return 1.0/(half*half); else return 1.0/(half*half*x); } } };
//方法二:其他人 class Solution { //divide-and-conquer //classic public: double pow(double x, int n) { if (n == 0) return 1.0; // Compute x^{n/2} and store the result into a temporary // variable to avoid unnecessary computing double half = pow(x, n / 2); if (n % 2 == 0) return half * half; else if (n > 0) return half * half * x; else return half * half / x; } };
标签:leetcode c++ divide-and-conquer
原文地址:http://blog.csdn.net/keyyuanxin/article/details/43567119