Этот вопрос спрашивает, как вычислить декартово произведение заданного числа векторов. Так как число векторов известно заранее и довольно мало, решение легко получается с вложенными циклами.
Теперь предположим, что вам предоставляется на вашем языке выбора вектор векторов (или список списков или набор наборов и т.д.):
l = [ [1,2,3], [4,5], [6,7], [8,9,10], [11,12], [13] ]
Если бы меня попросили вычислить его декартово произведение, то есть
[ [1,4,6,8,11,13], [1,4,6,8,12,13], [1,4,6,9,11,13], [1,4,6,9,12,13], ... ]
Я бы продолжил рекурсию. Например, в quick & dirty python,
def cartesianProduct(aListOfLists):
if not aListOfLists:
yield []
else:
for item in aListOfLists[0]:
for product in cartesianProduct(aListOfLists[1:]):
yield [item] + product
Есть ли простой способ вычислить его итеративно?
(Примечание. Ответ не обязательно должен быть в python, и в любом случае я знаю, что в python itertools делает работу лучше, чем в этот вопрос.)