У меня есть структура слоя, которая выглядит примерно так:
1.1
1.2
2.1
3.1
3.2
4.1
5.1
Я хочу вывести все возможные комбинации для каждого элемента, но не включая элементы с более высоким порядком, чем они сами, порядок является первым числом,так, например:
5.1 будет иметь следующие комбинации:
(4.1, 3.1, 2.1, 1.1)
(4.1, 3.1, 2.1, 1.2)
(4.1, 3.2, 2.1, 1.1)
(4.1, 3.2, 2.1, 1.2)
И 4.1 будет иметь:
(3.1, 2.1, 1.1)
(3.1, 2.1, 1.2)
(3.2, 2.1, 1.1)
(3.2, 2.1, 1.2)
Я хочу сделать это с помощью рекурсивной функции, я пробовал что-то, но это не работает так, как должно, здесь это в псевдокоде.
Я начинаю с порядка слоев и иду вниз, пока не доберется до слоев спорядок 1.
function recursion (layer)
if layer.order > 1 do
for iterationLayer in allLayers do
if iterationLayer.order == (layer.order - 1) do
print iterationLayer.name
recursion iterationLayer
else
end of combination
Этот код дает мне что-то вроде этого для 4.1 case
(3.1, 2.1, 1.1)
(1.2)
(3.2, 2.1, 1.1)
(1.2)
Это так, потому что когда рекурсия достигает последнего цикла forон прослеживает снизу вверх, у кого-нибудь есть решение для этого?