【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 };
相关文章
相关标签/搜索