【发布时间】:2019-02-19 03:51:21
【问题描述】:
我在一个 Scheme 程序中被困了大约 5 个小时。我正在处理的程序应该将两个列表作为输入,然后计算第一个列表中的模式出现在第二个列表中的次数。
例如:> (patt '(b c) '(a b c d e b c)) ==> 答案 = 2
(patt '(a b c) '(a b c a b c d e a b c c c)) ==> 答案 = 3
(patt '((a b) c) '(a b (a b) c d e b c)) ==> 答案 = 1
下面是我到现在为止的代码。
(define (patt lis1 lis2)
(cond
((null? lis1) 0)
((null? lis2) 0)
[(and (> (length lis1) 1) (eq? (car lis1) (car lis2))) (patt (cdr lis1) (cdr lis2))]
((eq? (car lis1) (car lis2)) (+ 1 (patt lis1 (cdr lis2))))
(else (patt lis1 (cdr lis2)))
))
谁能帮我解决这个问题。谢谢!
【问题讨论】:
标签: scheme racket mit-scheme