Схема рекурсии / минусы
Я в начале пути. Я пытался это понять cons
расстаться на 2-3 часа, но я попал в беду. Я не мог понять эту часть минусов. Как это сочетается 'a d'
в соответствии с результатом?
(define remv
(lambda (x ls)
(cond
[(null? ls) '()]
[(eqv? (car ls) x) (remv x (cdr ls))]
[else (cons (car ls) (remv x (cdr ls)))])))
Когда я помещаю ввод, как это:
> (remv 'b '(a b b d))
я получил (a d)
,
Но я не мог понять, как это стало 'a d'
,
1 ответ
Решение
Чтобы удалить все вхождения x
из списка ls
У вас есть три случая для рассмотрения:
ls
пусто, и в этом случае результат также пуст,- Первый элемент
ls
равноx
, в этом случае вы просто отбрасываете его и возвращаете остальную часть списка после того, как удалили всеx
Исходя из этого, - Первый элемент
ls
отличается отx
, в этом случае вы сохраняете этот элемент и вставляете его в начало списка, который не имеетx
эс в этом.