Scheme 检查数字列表中是否出现数字
编写一个名为Scheme 检查数字列表中是否出现数字,scheme,Scheme,编写一个名为direct num ocurses的过程?检查数字是否出现在数字列表中。示例: > (direct-num-occurs? 1 '(2 3 1 4)) ;=> #t 这就是我所尝试的: (define direct-num-occurs? (lambda (num ws) (cond [(null? ws) #f] [(equal? num (car ws)) #t] [else (direct-num-occurs?
direct num ocurses
的过程?检查数字是否出现在数字列表中。示例:
> (direct-num-occurs? 1 '(2 3 1 4))
;=> #t
这就是我所尝试的:
(define direct-num-occurs?
(lambda (num ws)
(cond
[(null? ws) #f]
[(equal? num (car ws)) #t]
[else (direct-num-occurs? (cdr ws) num)])))
但我得到一个错误,表示需要一对。为了将来参考,您正在执行以下过程:
(define (direct-num-occurs? n lst)
(if (member n lst) #t #f))
。。。但我猜你是想从头开始写。所示的实现基本上是正确的,只是在最后一行中以错误的顺序传递了参数。这应该可以解决这个问题:
(define direct-num-occurs?
(lambda (num ws)
(cond
[(null? ws) #f]
[(equal? num (car ws)) #t]
[else (direct-num-occurs? num (cdr ws))])))
当然,它的工作原理与预期一致:
(direct-num-occurs? 1 '(2 3 1 4))
=> #t
(direct-num-occurs? 1 '(2 3 5 4))
=> #f
啊,愚蠢的错误,是的,我们被告知从头开始做,因为我们正在学习cond函数。谢谢大家!@NathanCurtis没关系:)但在发帖之前,你应该更仔细地测试你的程序,好吗?
(direct-num-occurs? 1 '(2 3 1 4))
=> #t
(direct-num-occurs? 1 '(2 3 5 4))
=> #f