import copy
def combine(l, n):
answers = []
one = [0] * n
def next_c(li = 0, ni = 0):
if ni == n:
answers.append(copy.copy(one))
return
for k in range(li, len(l)):
one[ni] = l[k]
next_c(k+1, ni+1)
next_c()
return answers
print(combine([1,2,3,4],2))
Недавно я нашел этот код в Интернете. Он работает очень хорошо. Однако я не знаю подробностей о том, как это работает? Так кто-нибудь может сказать мне, как это работает? И как быстро понять рекурсивный код? Большое спасибоКомбинированный алгоритм в python
SO не репетиторство оказание услуг. Также вы даже не говорите, что должен делать код. – Julien
Существует стандартная реализация для 'комбинаций' в модуле' itertools'. Тот, который вы нашли, использует внутреннюю рекурсивную функцию для создания комбинаций. Попробуйте распечатать промежуточные результаты, чтобы увидеть, что происходит. – AChampion
На самом деле это даже не рекурсивно, это итеративно. –