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