[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 声明: 由于本人水平有限,文章在表述和代码方面如有不妥之处,欢迎批评指正~ |