Leetcode——50.Pow(x, n)


@author: ZZQ
@software: PyCharm
@file: leetcode50_myPow.py
@time: 2018/11/22 13:58
要求:实现 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
不是特别懂这道题目到底是要干嘛??? 递归

class Solution():
    def __init__(self):
        pass

    def myPow(self, x, n):
        """
        :type x: float
        :type n: int
        :rtype: float
        """
        if n == 0:
            return 1
        if n < 0:
            new_n = -n
            new_x = 1/float(x)
        else:
            new_n = n
            new_x = x

        ans = self.dfs(new_x, new_n, 0)
        return ans

    def dfs(self, new_x, new_n, ans):
        if new_n == 0:
            return 1
        ans += self.dfs(new_x, new_n / 2, ans)
        if new_n % 2 == 0:
            return ans * ans
        else:
            return ans * ans * new_x

posted @ 2018-11-22 15:04  恩zzq我是  阅读(124)  评论(0编辑  收藏  举报