leetcode_50_Pow(x, n)

来源:互联网 发布:怎样学好高中政治知乎 编辑:程序博客网 时间:2024/06/05 14:43

版权所有,欢迎转载,转载请注明出处,谢谢微笑


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) {        if( n==0 )            return 1.0;        double half; //定义错成int        if( n>0 )        {            half = pow( x , n/2 );            if( n%2 == 0)                return half*half;            else                return half*half*x;        }        else if ( n<0 )        {            n = -n;  //忘记取反            if( x==0 )                return 0.0;            else            {                half = pow( x , n/2 );                if( n%2 == 0)                    return 1/(half*half);                else                    return 1/(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//classicclass Solution {public:    double pow(double x, int n) {        if( n==0 )            return 1.0;        double half; //定义错成int        if( n>0 )        {            half = pow( x , n/2 );            if( n%2 == 0)                return half*half;            else                return half*half*x;        }        else if ( n<0 )        {            n = -n;  //忘记取反            if( x==0 )                return 0.0;            else            {                half = pow( x , n/2 );                if( n%2 == 0)                    return 1/(half*half);                else                    return 1/(half*half*x);            }        }    }};


//方法二:其他人class Solution {//divide-and-conquer//classicpublic: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 computingdouble half = pow(x, n / 2);if (n % 2 == 0)return half * half;else if (n > 0)return half * half * x;elsereturn half * half / x;}};


2 0
原创粉丝点击