我从leetcode中得到这段代码。有人能为我解释这个递归吗?
class Solution(object):
def myPow(self, x, n):
if n == 0:
return 1
if n == -1:
return 1/x
return self.myPow(x * x, n/2) * ([1, x][n % 2])
该代码被用来实现poe(x, n)
,这意味着在Python x**n
。
我想知道为什么它可以执行pow(x, n)
。
它看起来没有意义......
我明白
if n == 0:
and
if n == -1:
但核心代码:
self.myPow(x * x, n/2) * ([1, x][n % 2])
真的很难理解。
顺便说一句,此代码仅适用于Python 2.7。如果你想测试在Python 3中,你应该改变
myPow(x*x, n/2) * ([1, x][n % 2])
到
myPow(x*x, n // 2) * ([1, x][n % 2])
@AnttiHaapala虽然它被标记为'python-2.x'。但是,好的提到。 –
*虽然这是Python 2的标签,因为它假定'/'是地板部门;用''替换'/',它可以在任何地方使用。 –
你为什么需要一堂课?为什么不只是'def myPow(x,n)'? – GingerPlusPlus