python 遞回問題
def partition_tree(n, m):
"""Return a partition tree of n using parts of up to m."""
if n == 0:
return tree(True)
elif n < 0 or m == 0:
return tree(False)
else:
left = partition_tree(n-m, m)
right = partition_tree(n, m-1)
return tree(m, [left, right])
>>> partition_tree(2, 2)
上面這段代碼中,當傳遞(2,2)到partition_tree 函式里面的時候,我的理解是就會執行else里面的陳述句,那么當left再次呼叫 partition_tree這個函式的時候,n-m就變成0,0的就是就會執行 n == 0這個陳述句,那么就是代表else里面 的right陳述句和retrun 陳述句就不會執行。這是我的理解,我覺得我理解是錯的,請問有人解釋一下嗎?
uj5u.com熱心網友回復:
你的理解沒有問題,只是你這個else不執行說的是這一層的else不執行,回退到遞回上一級時,還是有可能會執行的。好比你家兩室一廳加一超大陽臺,去一室相當于n==0 ,去二室相當于n<1...,去陽臺相當于else
現在你家的陽臺里又有兩個一模一樣的兩室一廳,你先去陽臺左邊的兩室一廳,發現n==0了,這時你進去tree,tree完事后你是不是先回到陽臺?這時陽臺右邊的兩室一廳還能進去嗎?當然能去。
所以你要最侄訓到你家大門,是不是得要一級一級的從房子里的房子退到陽臺再出門呢?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/29974.html
上一篇:【加急,求助】網址中含有數字和字母混合時怎么批量爬取網站?
下一篇:pands讀取一列的部分資料
