我最近开始学习球拍和计划。我在列表上练习一些操作,我想用递归策略找出列表的所有排列。此函数将返回所有可能的排列列表的列表。即(permute'(1 2))将给出(列表(列表1 2)(列表2 1))。
这是我的功能,
(define (permute l)
(cond
[(empty? l) (cons list(list))]
[(empty? (rest l)) (list l)]
[(= (length l) 2)
(list (cons (second l) (list (first l)))(cons (first l) (list (second l))))
]
[else (????)
]
))
我的困惑是如何使用此函数生成长度超过2的所有排列。因为我在球拍中使用中级学生语言我不能使用lambda。
任何人都可以帮我理解下一步该做什么吗?