1

リストから特定の数字を完全に削除する必要があります。これは次のように入力されます。 (remove-digit 1 '(1 2 3 '(4556 1)))

(2 3 (4556)) のコードでリストから削除できます。

(define (remove-digit digit list)
  (cond ((null? list) list)
        ((= digit (car list)) (remove-digit digit (cdr list)))
        (else (cons (car list) (remove-digit digit (cdr list))))))

ただし、リスト内のリストから削除することはできません。どんな助けでも大歓迎です

4

3 に答える 3

2

cond(サブ)リストを処理するステートメントに句を追加する必要があります。

(define (remove-digit digit list)
  (cond ((null? list) list)
        ((eqv? digit (car list)) (remove-digit digit (cdr list)))
        ((list? (car list)) (cons (remove-digit digit (car list)) 
                                  (remove-digit digit (cdr list))))
        (else (cons (car list) (remove-digit digit (cdr list))))))
于 2013-04-28T19:44:07.457 に答える
0

変更 = 等しい?

(define (remove-digit digit list)
  (cond ((null? list) list)
        ((equal? digit (car list)) (remove-digit digit (cdr list)))
        (else (cons (car list) (remove-digit digit (cdr list))))))

(display (remove-digit 1 '(1 2 3 (4556 1))))
于 2013-04-28T19:42:02.117 に答える