我目前遇到以下问题:
我有一个包含n个元素的数据库,我想做一个递归搜索,这样我就可以获得所有可能的匹配。
所以,让我们说,我得到第一个模式的k匹配。对于每个k匹配,我发现我使用下一个模式重新搜索数据库并获得新的关联列表....依此类推。这是我的问题,我不能做一个能给我所有结果的功能。
我真的不能让自己想到一个解决这个问题的“计划”。我总是想知道如何保存我的临终关联列表,同时在我结束时删除它。
我的想法摘要:如果我有一个数据库= db并且需要匹配n个模式。我从模式0开始,得到k个关联列表,我想继续前进以匹配模式1,记住我有前面的k个关联列表。我完成模式1并获得M关联列表,对于每个m关联列表,我前进...最后我得到一个大小为n(模式数量)的关联列表或者得到错误。
我真的只想要一些想法,所以我可以通过这个“砖墙”。请判断,刺伤,杀死我的想法,任何事情。谢谢。
答案 0 :(得分:0)
我不确定您是希望根据后续搜索缩小或扩大搜索范围。这是扩展的伪代码:
recursive_search (list_of_patterns)
if is_empty(list_of_patterns)
return empty_list
pattern = pop_first(list_of_patterns)
return query(pattern) + recursive_search(list_of_patterns)
编辑以保持您的模式与查询作为一个单独的...我的方案-foo很弱,但这里是:
(define query_alist (lambda x)(x . query-exec(x)))
(define r_query (lambda pattern__list)
(cond
((null pattern_list) ())
(else ((query_alist (first pattern_list) (r_query (rest pattern_list)))
)
)