我有一個元素列表。我想知道列表中是否有兩對元素,其中元素對的元素具有相同的值。如何限制python中的遞歸深度?
我的想法是,我首先比較列表中的所有元素,如果找到一對,則從列表中刪除該對,然後再繼續。因此我認爲我可以使用遞歸來完成這個任務,但是將深度限制爲2來解決問題。
這是我第一次嘗試:
recursion_depth=0
def is_twopair(card):
nonlocal recursion_depth
if recursion_depth==2: return True
for i in range(0, len(card)):
for k in range(i+1,len(card)):
if card[i].value==card[k].value:
del card[k], card[i]
recursion_depth+=1
is_twopair(card)
else: continue
else: continue
else: return False
我使用變量recursion_depth記錄遞歸的深度,但後來意識到,返回的命令不會立即終止函數並返回true,但回報而不是原來的調用者is_twopair(卡)。所以我的問題是:
- 有沒有辦法立即終止函數並返回結果true?
- 有沒有辦法限制遞歸的深度?
我知道可能有幾種方法來解決這個問題。但我想保持忠實於我的想法,並將其作爲學習的機會。
你能複製一個你的列表的例子嗎? – Ika8
我的清單是一張撲克類卡片的對象清單。例如:[TD,TH,KD,KH,QD]。 (TD代表十顆鑽石,TD代表十顆心,KD代表King Diamond等)。屬性值表示卡的13個可能值之一(2,3,4 ... 10,J,Q,K A)。但我認爲這與問題無關。問題可以在任何類型的任何列表中鑄造。上面的列表應該返回true(我們有2張牌,2張國王牌) –