0

私の目標は、このリストから見つけることです

(A B C D E G)

新しいリスト

(B D G)

しかし、私のコードは機能していません。

(define  (fun lst)
    (cond
     ((null? lst) '())
      ((null? (cdr lst) '())
       (else  (cons ( cadr lst) ( fun lst))))

私は得て(B C D E G)います。どこで間違ったのですか?

4

1 に答える 1

2

関数は何も実行しておらず、テストしたいものを実際に指定していません。本当にその特定のリストから BDG だけを取得したい場合は、文字ごとに (equal? (car lst) 'B) などの各テストを行うだけです。

代わりに、関数がリスト内の他のすべての文字を出力するだけであると想定される場合は、それを行う方法を構築する必要があります。たとえば、現在の再帰の基本ケースは正しく、空のリストは空のリストを返す必要があります。それ以外の場合は、リストの cdr を返し、それを操作します。

それでも答えがわからない場合は、紙に書き始めて、さまざまなテストがどのように機能するかを確認してください。他のすべての文字を見つける方法を考え出す必要があります。

于 2012-11-11T18:41:25.450 に答える