У меня есть список элементов. Я хочу знать, есть ли в списке две пары элементов, в которых элементы пары имеют одинаковое значение.Как ограничить глубину рекурсии в 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 записать глубину рекурсии, но потом понимает, что команда возврата не сразу прекращает функцию и возвращает истину, но возвращается вместо этого его первоначальный вызывающий 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 король-карты) –