【Leetcode】【Medium】Pow(x, n)

Implement pow(xn).spa

 

解題思路:code

求浮點數的冪次方,注意可能爲負數次冪;blog

能夠使用二分搜索的思想,當n爲偶數時,x^n = x^(n/2) * x^(n/2),所以只須要求得一半的冪次方,將結果平方,就獲得所求結果。遞歸

 

解題步驟:io

一、遞歸最底層,n == 0 時,返回1;class

二、求出t = pow(x, n/2);搜索

三、判斷n的奇偶性:di

  a. 若是奇數,要判斷n的符號,n爲負數乘以1/x,n爲正數時乘以x;co

  b. 若是偶數,不須要多乘;同時,也不須要判斷符號,由於符號形式已經包含在待乘的兩個t中;浮點數

 

代碼:

 1 class Solution {
 2 public:
 3     double myPow(double x, int n) {
 4         if (n == 0) 
 5             return 1;
 6         double t = myPow(x, n / 2);
 7         if (n % 2) {
 8             return n < 0 ? 1/x*t*t : x*t*t;
 9         } else {
10             return t*t;
11         }
12     }
13 };
相關文章
相關標籤/搜索