leetcode50.Pow(x,n)

leetcode50.Pow(x,n)

题目描述

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

输入:x = 2.00000, n = 10
输出:1024.00000

解题思路

采用递归,利用快速幂的技巧实现计算乘方。

快速幂Exponentiation by squaring,平方求幂)是一种简单而有效的小算法,它可以以O(log⁡n)的时间复杂度计算乘方

eg:

计算2的10次方
相比于2*2*2*2....*2=1024
2^5*2^5=32*32=1024 要比上面更快且简单

模仿这样的过程,我们得到一个在 O(log⁡n) 时间内计算出幂的算法,也就是快速幂。

  private static double myPow(double x, long n) {

        if(n<0){
            return myPow(1/x,-n);
        }
        if(n==0){
            return 1.00;
        }
        if(n==1){
            return x;
        }
        if(n%2==0){
            return myPow(x*x,n/2);
        }else {
            return myPow(x*x,n/2)*x;
        }

    }

你可能感兴趣的:(刷题记录,leetcode,算法,java)