在grails中是否有此递归算法的更有效实现?

时间:2019-05-13 18:55:21

标签: java search grails pattern-matching

我有一个'traits',L列表和一个我要匹配的列表数据库。我想查找包含L中所有特征的列表。如果尚未收集5,我将从L中删除一个特征,然后再次在数据库中搜索包含所有特征的列表。顺序无关紧要,我只在乎查找特征的确切列表。

目前,我有一个递归解决方案,其中我在每个位置上切出一个元素并再次匹配。它可以完成工作,但我想找到一种更有效的方法来匹配这些列表。

def match([1,2,3,4,5]) {

 findAllByTraits([1,2,3,4,5])  //[1,2,3,4,5,7,10] will match
                               //[2,3,4,5] will not match this iteration

 //if 5 lists not found
 match([1,2,3,4]) //without 5
 match([1,2,3,5]) //without 4
 match([1,2,4,5]) //without 3
 match([1,3,4,5]) //without 2
 match([2,3,4,5]) //without 1
}

我立即看到的问题是,它将导致许多情况被多次递归调用。另外,对于此示例,它将继续进行match([1,2,3,4]),然后再处理其他匹配情况。这可能会导致较小的列表在较大的列表之前被“匹配”。目标是拥有5个最大的列表。

0 个答案:

没有答案