題目連接html
Implement pow(x, n).函數
主要利用x^2n = (x^n)*(x^n), x^2n+1 = (x^n)*(x^n)*xcode
注意n是負數,對其取反時,可能會溢出htm
其實0^0(都是整數)是未定義的,由於0^0 = 0^1 / 0^1 = 0 / 0, 0做爲除數是未定義的,能夠參考維基百科。blog
可是庫函數pow(0.0,0) = 1,下面咱們也這麼處理。 本文地址ip
若是x是無窮大(即x = numeric_limits<double>::infinity()),若是n>0,返回無窮大,若是n == 0返回1,若是n<0,返回負無窮-numeric_limits<double>::infinity()。(1/0.0 不會出現運行錯誤,結果是正無窮)leetcode
class Solution { public: double pow(double x, int n) { //基數爲1,-1, 0,能夠特殊處理 //if(x == 1)return 1.0; //else if(x == -1)return n%2 ? -1.0 : 1.0; //else if(x == 0)return 0.0; double res = 1.0; //使用long long主要防止n = -2147483648時,取反溢出 long long nn = n; if(nn < 0) nn = -nn; while(nn != 0) { if(nn & 1) res *= x; nn >>= 1; x *= x; } if(n > 0) return res; else return 1/res; } };
【版權聲明】轉載請註明出處:http://www.cnblogs.com/TenosDoIt/p/3802902.htmlget