我有一個列表:從迭代遞歸 - 重新排序列表
L = [0,'a','b','c']
如果我運行以下命令:
sortedList = []
while len(L) > 0:
item = L.pop()
sortedList.append(item)
print(sortedList)
輸出:
['c', 'b', 'a', 0]
舉一個簡單的演習試圖理解遞歸我想把上面的遞歸函數。 我有兩次嘗試 - 我該如何修復一個或兩個 - 或者是否存在遞歸解決方案?
1.
def extract(Seq):
if Seq == [0]:
return s.append(0)
else:
extract(Seq[:len(Seq)-1])
if not s: s = []
x=Seq.pop()
return s.append(x)
M = [0,'a','b','c']
print(extract(M))
2.
def extract2(Seq):
s=[]
if Seq:
return s.append(Seq.pop())
extract2(Seq)
N = [0,'a','b','c']
print(extract(N))
首先,避免使用大寫首字母爲變量,甚至更多的時候變量都有一個名字,可以看起來像一個類,這很混亂。 – zmo
用這個着名的遞歸排序算法找到一些靈感:http://en.wikipedia.org/wiki/Quicksort –
你在這裏得到了幾個很好的答案,儘管幫你實際做到了這一點,這裏有一點小技巧:當你創建一個遞歸算法時,你通常需要考慮三個步驟:初始化遞歸;檢查遞歸條件的結束;做遞歸。在代碼中不一定是明確的,不一定按照這個順序,但是你需要考慮這些。 – zmo