我正在尝试编写一个函数,仅使用基本列表构造(缺点,空,第一,休息)来创建列表的排列.我正在考虑在列表的其余部分的递归调用中到处插入列表的第一个值,但是我的基本情况遇到了一些问题.
我的代码:
(define (permutation lst)
(cond
[(empty? lst) (cons empty empty)]
[else (insert_everywhere (first lst) (permutation (rest lst)))]))
Run Code Online (Sandbox Code Playgroud)
(置换(列表1 2))给了我(列表1 2空2 1空).我可以做些什么来在不同的组合之间创建占位符(例如空)但是没有让程序将占位符解释为列表中的元素?
我的基础案例是对的吗?
谢谢!