开发者社区 问答 正文

Python分治实现X的n次幂

作为一名新的python程序员,我正在解决一个Leetcode问题,不知道为什么我的代码不能工作,所以我非常感谢您的建议: 问题: 实现pow(x, n)计算x的n次方。 例子: 输入:2.00000,10 输出:1024.00000 这是我的python代码(我尝试使用分治的概念):

class Solution:
    def myPow(self, x, n):
        if n == 0:
            return 0
        if n == 1:
            return x
        return self.power(x,n)
    def power(self,x,n):
        if n == 1:
            return x
        self.power(x,n//2)
        self.multiply(x,x)
        return x
    def multiply(self,x,y):
        x = x*y
        return x
test3=Solution()
test3.myPow(2,4)

但是结果是2而不是16。我希望上述代码的工作如下: 功率(2、4)- >电源(2,2)- >电源(2,1),而达到n = = 1以来的基本情况,然后我们继续力量(2,2),由于函数乘以(x, x)或乘(2,2)在这种情况下,我希望x成为4 (x = 2 * 2),然后我们继续力量(2、4),由于函数乘以(x, x), x = 4 * 4 = 16 我不知道为什么我错了,有专家可以给我一些建议吗? 问题来源StackOverflow 地址:/questions/59382900/python-divide-and-conquer-implementation-of-nth-power-of-x

展开
收起
kun坤 2019-12-27 16:58:05 798 分享 版权
1 条回答
写回答
取消 提交回答
  • x^0总是等于1,所以myPow()中的第一个“if”是不准确的。 另外,power()函数总是返回x,因为这几行:

    self.power(x,n//2)
    self.multiply(x,x)
    

    不要把它们返回的值赋给任何东西。

    2019-12-27 16:58:12
    赞同 展开评论
问答分类:
问答标签:
问答地址: