我希望有人能指导我正确的方向:
我正在寻找两个在两个列表中生成所有可能的项目组合:
示例:
给定列表 '(symbol1 symbol2) 和 '(1 2),我希望生成:
(list (list 'symbol1 1) (list 'symbol1 2) (list 'symbol2 1)(list symbol2 2))
到目前为止我的代码是:
(define (combiner list1 list2)
(list
(foldr (lambda (a b) (foldr (lambda (c d) (list a c)) empty list1)) empty list2)
(foldr (lambda (a b) (foldr (lambda (c d) (list b d)) empty list1)) empty list2)))
这显然行不通,我尝试过的其他一些方法也行不通。我在处理两个列表上的隐式递归时遇到问题 - 有什么想法吗?
最佳答案
您在这里看到的是两个复杂参数的递归,section 17如何设计程序。如果您需要其他提示,我会告诉您这是三种情况中的哪一种。
关于racket - DrRacket 组合列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8190962/