前言:這是我以前在我的數據結構和算法類中進行的考試。比較列表;返回唯一列表。 - Python
問題:修改此函數,以便返回L1和L2中這些項目的排序列表。例如,給定[1,2,3,4,5],[0,2,3,5,8]該函數應返回[2,3,5]。該函數必須以某種方式使用遞歸。
def merge(L1, L2):
if L1 == []:
return L2
elif L2 == []:
return L1
elif L1[0] <= L2[0]:
return L1[:1] + merge(L1[1:], L2)
else:
return L2[:1] + merge((L1, L2[1:])
我修改的功能:
def merge(L1, L2):
if L1 == []:
return L1
elif L2 == []:
return L2
elif L1[0] < L2[0]: #Push L1 forward
return merge(L1[1:], L2)
elif L1[0] > L2[0]: #Push L2 forward
return merge(L1, L2[1:])
elif L1[0] == L2[0]: #If same element, return element
return L1[:1] + merge(L1[1:], L2[1:])
我使用的基本if語句來推動名單前確保正在檢查每個列表中的每個元素互相反對。天色漸晚,我以前的代碼保存返回[2,3,5,8],因爲我本來有:
if L1 == []:
return L2
elif L2 == []:
return L1
當L1耗盡它會返回L2.I的其餘部分則是重新輸入代碼並意外地放入:
if L1 == []:
return L1
elif L2 == []:
return L2
它的工作!輸出是[2,3,5],但是,它並沒有任何意義,我
我的問題是:
爲什麼前兩個如果返回耗盡列表的報表給我的輸出[2 ,3,5]
爲什麼返回空列表中的遞歸函數?
最後,如果我的列表在遞歸函數中耗盡,是否有辦法打破if語句鏈?
我不明白你的問題的最後一部分。你能解釋一下嗎? – thefourtheye
對不起,最後一個問題可以忽略不計。這是一個重複。我不明白前兩個如果陳述如何工作,直到他們解釋。他們是我的基本案例。 – Aimforchris