我有一个元素列表。我想知道列表中是否有两对元素,其中元素对的元素具有相同的值。如何限制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张国王牌) –