2

という手続きを書くdirect-num-occurs?数字のリストに数字が含まれているかどうかをチェックします。例:

> (direct-num-occurs? 1 '(2 3 1 4))
;=> #t
> (direct-num-occurs? 1 '(2 3 5 4))
;=> #f

これは私が試したものです:

(define direct-num-occurs?
  (lambda (num ws)
    (cond
      [(null? ws) #f]
      [(equal? num (car ws)) #t]
      [else (direct-num-occurs? (cdr ws) num)])))

しかし、ペアが必要だというエラーが表示されます。

4

1 に答える 1

3

member今後の参考のために、手順を再実装しています。

(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
于 2013-09-16T23:17:22.240 に答える