[LeetCode 题解]: pow(x,n)

前言

 

【LeetCode 题解】系列传送门:  http://www.cnblogs.com/double-win/category/573499.html

1.题目描述

Implement pow(x, n).

2. 思路

题目很精简,不过需要考虑的情况很多,特别的需要注意 n可能为0 或者负数的情况。

另外,通过二分法,可以减少计算量。

3. 解法

class Solution {
public:
    double pow(double x,int n)
    {
        if(0==x || 1.0==x || n==1) return x;  //返回x的情况
    
        if(0==n) return 1.0;  // n的值为0 
    
        if(n<=0)     // 当n为负数的时候,转化成正数,递归
        {
            x= 1.0/x;
            n = -n;
        }
    
        double ans=1.0;
        double temp = pow(x,n/2);  // 预操作,减少计算量
        if(n%2)
            ans = x*temp*temp; // 奇数情况
        else
            ans = temp*temp;  // 偶数情况
        return ans;
    }
};

作者:Double_Win

出处:   http://www.cnblogs.com/double-win/p/3707444.html

声明: 由于本人水平有限,文章在表述和代码方面如有不妥之处,欢迎批评指正~

posted @ 2014-05-04 16:59  Double_win  阅读(178)  评论(0编辑  收藏  举报