LeetCode 50.Pow(x, n)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Oscar6280868/article/details/89022553

这道题目比较简单,就是要实现一个指数函数,题目如下:
题目
首先,如何来解答这个题目,我们可能会想到,在很多语言中都内置了这个函数,直接可以调用库函数,这个时候的时间复杂度为 O ( 1 ) O(1) ,还有一种方法就是暴力解法,写一个循环,循环次数为 n n ,每次都乘以 x x ,所以这个时候的时间复杂度为 O ( N ) O(N) ,这都是比较容易想到的办法。
接下来我们可以从另外一个角度来进行分析,我们可以用递归的方法,将整个 n n 次幂进行二分,当然需要判断 n n 的奇偶性,直到 n n 为1,代码如下所示:

class Solution(object):
    def myPow(self, x, n):
        """
        :type x: float
        :type n: int
        :rtype: float
        """
        if not n:
            return 1
        if n < 0:
            return 1/self.myPow(x, -n)
        if n % 2:
            return x * self.myPow(x, n-1)
        return self.myPow(x * x, n / 2)

用这样递归的方法,就可以将指数函数的幂进行递归拆分,希望能对大家的递归算法的理解有所帮助,谢谢。

猜你喜欢

转载自blog.csdn.net/Oscar6280868/article/details/89022553
今日推荐