0

假设(list 'red 'blue 'green 'yellow)(list 'black 'red 'orange 'green),那么它应该产生 2,因为有 2 个相同的元素。我只知道如何在完全相同的位置找到相同的元素,如下所示:

(define (helper l1 l2)
  (cond
    [(equal? l1) empty]
    [(equal? l2) empty]
    [(equal? (first l1) (first l2)) true]
    [else (rest l1) (rest l2)]))

请帮忙。:)

4

2 回答 2

3

如果您不将此作为家庭作业练习,这里是 Óscar López 使用 Racket 的集合库的代码。

#lang racket

(require racket/set)

(define number-same (compose1 length set-intersect))

(number-same '(red blue green yellow)
             '(black red orange green))
于 2014-06-11T15:58:30.963 回答
-1

这是我在球拍上的两个列表中查找相同元素的代码

(define (cek x y)
 (cond
 [(null? y) 0]
 [(eq? x (car y)) (+ 1 (cek x (cdr y)))]
 [else (cek x (cdr y))]
 )
)
(define (sifat x y)
 (cond
 [(null? x) 0]
 [else (+ (cek (car x) y) (sifat (cdr x) y))]
 )
)
于 2017-02-27T18:33:46.107 回答