0

我目前遇到以下问题:

我有一个包含 n 个元素的数据库,我想进行递归搜索,以便获得所有可能的匹配项。

所以,可以说,我得到了第一个模式的 k 个匹配项。对于我发现的每 k 个匹配项,我使用下一个模式重新搜索数据库并获取新的关联列表 ....等等。这是我的问题,我无法制作一个能给我所有结果的函数。

我真的无法让自己想出一个解决这个问题的“计划”。我总是想知道如何保存我当前的关联列表,同时,当我走到最后时将其删除。

我的想法总结:如果我有一个 database=db 并且需要匹配 n 个模式。我从模式 0 开始,获取 k assoc-list 并且我想继续匹配模式 1 ,记住我有前一个的 k assoc-lists。我完成模式 1 并获得 M assoc-list ,对于每个 m assoc-list 我前进......最后我要么得到一个大小为 n(模式数)的 assoc-list 要么得到错误。

我真的只想要一些想法,这样我就可以越过这堵“砖墙”。请判断,刺伤,扼杀我的想法,任何事情。谢谢你。

4

1 回答 1

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)

编辑以将您的模式与查询保持为 alist ......我的方案 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)))
  )
) 
于 2013-04-03T22:42:44.027 回答