我试图在计划中为学校作业做一个计划。给定一个列表,它应该返回该列表的所有给定排列。我的问题是,我不知道为什么它适用于数字但不适用于字符。似乎它不会改变任何逻辑!
这是我的代码:
(define (remove1 x lst)
(cond
((null? lst) '())
((= x (car lst)) (remove1 x (cdr lst)))
(else (cons (car lst)
(remove1 x (cdr lst))))))
(define (permute lst)
(cond
((= (length lst) 1) (list lst))
(else (apply append (map (lambda (i)
(map (lambda (j) (cons i j))
(permute (remove1 i lst))))
lst)))))
(permute '(1 2 3))
答案 0 :(得分:1)
=
用于比较数字;要进行更一般的比较,请使用eq?
,equal?
或(根据建议)eqv?
。