我從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