在球拍中使用中间语言来查找列表的排列

时间:2017-10-06 20:49:08

标签: algorithm list functional-programming scheme racket

我最近开始学习球拍和计划。我在列表上练习一些操作,我想用递归策略找出列表的所有排列。此函数将返回所有可能的排列列表的列表。即(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。

任何人都可以帮我理解下一步该做什么吗?

0 个答案:

没有答案