Recursion 方案中的递归搜索

Recursion 方案中的递归搜索,recursion,Recursion,我目前遇到以下问题: 我有一个包含n个元素的数据库,我想做一个递归搜索,这样我就能得到所有可能的匹配项 比如说,我得到了第一个模式的k个匹配项。对于我找到的每k个匹配项,我用下一个模式重新搜索数据库,并获得新的关联列表……等等。这是我的问题,我不能做一个能给出所有结果的函数 我实在想不出一个解决这个问题的“计划”。我总是想知道如何保存我当前的assoc列表,同时在结束时删除它 我的想法总结:如果我有一个database=db并且需要匹配n个模式。我从模式0开始,得到k个assoc list,我想

我目前遇到以下问题:

我有一个包含n个元素的数据库,我想做一个递归搜索,这样我就能得到所有可能的匹配项

比如说,我得到了第一个模式的k个匹配项。对于我找到的每k个匹配项,我用下一个模式重新搜索数据库,并获得新的关联列表……等等。这是我的问题,我不能做一个能给出所有结果的函数

我实在想不出一个解决这个问题的“计划”。我总是想知道如何保存我当前的assoc列表,同时在结束时删除它

我的想法总结:如果我有一个database=db并且需要匹配n个模式。我从模式0开始,得到k个assoc list,我想向前移动以匹配模式1,记住我有上一个的k个assoc list,。我完成模式1并得到M assoc列表,对于我前进的每个M assoc列表。。。最后,我要么得到一个大小为n(模式数)的assoc列表,要么得到false


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

我不确定您是否希望根据后续搜索缩小或扩大搜索范围。以下是扩展的伪代码:

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)
编辑以将查询作为列表保留您的模式。。。我的计划很弱,但有以下几点:

(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)))
  )
) 

这就是我现在正在做的。我遇到的问题是,我想在进行扩展时保留关联列表,这样,最后,我会得到一个包含所有元素的关联列表的大列表,这些元素都符合初始模式。我没有尝试运行scheme代码,所以它可能有问题,但这与您所寻找的更接近吗?