【发布时间】:2018-06-08 08:26:05
【问题描述】:
我有一个类似这样的层结构:
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 案例
,这段代码给了我类似的东西(3.1, 2.1, 1.1)
(1.2)
(3.2, 2.1, 1.1)
(1.2)
之所以这样,是因为当递归到达最后一个 for 循环时,它会从底部回溯到顶部,有人对此有解决方案吗?
【问题讨论】:
-
这类问题不用递归更容易解决,是不是一定要用递归来解决?
标签: recursion matrix combinations layer