只是想回到計劃的擺動再次遞歸下去,因爲每個人都喜歡的遞歸..(mhhmnmm。)計劃通過列表
反正試圖返回#T或#F以確定是否所有元素一個列表是唯一的。
比較第一個元素和第二個元素沒問題。它的遞歸繼續..
(define (unique ls)
(if (null? ls) #t
(equal? (car ls)(car(cdr ls)))))
只是想回到計劃的擺動再次遞歸下去,因爲每個人都喜歡的遞歸..(mhhmnmm。)計劃通過列表
反正試圖返回#T或#F以確定是否所有元素一個列表是唯一的。
比較第一個元素和第二個元素沒問題。它的遞歸繼續..
(define (unique ls)
(if (null? ls) #t
(equal? (car ls)(car(cdr ls)))))
我會寫一個演示循環不同,簡單的功能。希望在這之間和你有什麼,你會到達那裏。 :-)
(define (member x lst)
(cond ((null? lst) #f)
((equal? x (car lst)) lst)
(else (member x (cdr lst)))))
又如:
(define (assoc x alist)
(cond ((null? alist) #f)
((equal? x (caar alist)) (car alist))
(else (assoc x (cdr alist)))))
嗯,你(equal?)
調用是不完整的。如果頭部和尾部是相等,則「唯一」的值是false
。如果它們不相等,則返回應用於列表尾部(cdr)的值unique
。
(這是在你檢查預先排序列表中的原執行隱含的。如果不是這樣,那麼這是一個步驟拿。)
(use srfi-1)
(define (unique? ls) (eq? (length ls) (length (delete-duplicates ls))))