【发布时间】:2021-01-04 20:51:41
【问题描述】:
我对球拍编码不熟悉,但我想定义一个程序来检查给定列表是否是另一个列表的子列表(或一部分)。
这是我目前的代码:
(define prefix?
(lambda (lst1 lst2)
(cond
((equal? lst1 lst2) #t)
((null? lst2) #f)
(else (prefix? lst1 (reverse (rest (reverse lst2))))))))
(define sublist?
(lambda (lst1 lst2)
(cond
((prefix? lst1 lst2) #t)
((null? lst2) #f)
(else (prefix? lst1 (rest lst2))))))
我已经尝试了大多数情况,它按预期的方式工作,但是当我尝试这个测试用例时:
(sublist? '(a b d) '(a b c a b d e))
它在应该返回 #t 时返回 #f 我尝试跟踪子列表?程序,但它没有返回任何有用的信息。
我的代码有逻辑错误吗?
【问题讨论】:
标签: list recursion scheme racket sublist