Я пытаюсь стать более знакомым с рекурсией на Схеме. Я искал банк вопросов и видел множество «встроенных» функций для поиска повторяющихся записей в списке схем, но я пытаюсь создать свой собственный. Я еще не узнал о «лямбда». Моя забота - когда я вызываю функцию рекурсии, элемент автомобиля будет обновлен. Я хочу сохранить одно и то же, но каждый раз передавайте новый cdr, поэтому исходный элемент автомобиля можно сравнить с каждым последующим элементом в списке. Я хочу вернуть #t, если есть совпадение, и #f, если нет совпадения, или cdr пуст (базовый регистр). Любая помощь/совет будут очень признательны.Поиск дублирующих элементов в списке схем
(define (findDuplicates list)
(if (null? list)
#f
(if (null? (cdr list))
#f
(if (= (car list) (getCarOfCdr list))
#t
(findDuplicates (cdr list)) //trying to use recursion
)
)
)
)
(define (getCarOfCdr list) //Helper function
(car (cdr list))
)