美文网首页
50. Pow(x, n) (经典的迭代回溯法)

50. Pow(x, n) (经典的迭代回溯法)

作者: HITZGD | 来源:发表于2018-12-13 10:13 被阅读0次

    题目
    实现 pow(x, n) ,即计算 x 的 n 次幂函数。

    示例 1:

    输入: 2.00000, 10
    输出: 1024.00000

    示例 2:

    输入: 2.10000, 3
    输出: 9.26100

    示例 3:

    输入: 2.00000, -2
    输出: 0.25000
    解释: 2-2 = 1/22 = 1/4 = 0.25

    说明:

    -100.0 < x < 100.0
    n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。

    思路
    n为偶数时,a的n次方等于a的n/2次方乘a的n/2次方。n为奇数时,a的n次方等于a的n/2次方乘a的n/2次方乘a。

    #include <climits>
    #include <algorithm>
    using namespace std;
    class Solution {
    public:
        double myPow(double x, int n) {
            double y = x;
            if (n == 0)
            {
                return 1;
            }
            else
            {
                if (n == INT_MIN)
                {
                    n += 2;
                }
                int abss = abs(n);
                double temp = myPow(y, abss / 2);
                y = abss % 2 == 0 ? temp * temp : y * (temp * temp);
                return n < 0 ? std::max(1 / y, 0.0) : y;
            }
        }
    };
    
    int main(int argc, char* argv[])
    {
        double x = 2.0;
        int n = 4;
        auto res = Solution().myPow(x, n);
        return 0;
    }
    
    

    相关文章

      网友评论

          本文标题:50. Pow(x, n) (经典的迭代回溯法)

          本文链接:https://www.haomeiwen.com/subject/kblvhqtx.html