【发布时间】:2015-02-28 13:16:02
【问题描述】:
我似乎不知道如何编写一个正确的 uscheme(MIT 方案的派生)函数,该函数将返回布尔值是否包含一个较小的列表。
这是我写的。
(define sublist? (xs ys)
(if (= xs '())
#t
(if (= ys '())
#f
(if (= (car xs) (car ys))
(sublist? (cdr xs) (cdr ys))
(sublist? xs (cdr ys))
)
)
)
)
它通过了我的大部分测试用例,除了这个测试用例。
(sublist? '(a b c) '(1 2 a 3 b 4 c 5 6))
;; this returns true while it's supposed to return false
测试用例要求子列表是连续的,中间没有随机元素。
我有点不知道如何纠正这个问题。还有其他人有想法吗?
【问题讨论】:
标签: scheme