想不出如何从列表中删除数字 - Scheme

时间:2012-11-07 22:50:32

标签: scheme

这是我的功能:

(define (remove-digit digit list)
  (cond ((null? list ...))
    (( = (car list) digit) (remove-digit digit (cdr list)))
      (else (cons (car list) (if (null? list) (cons(remove-digit digit (cdr list))))))is:

它应该这样做:

(1 2 4 5 2 5 6)之后(删除数字2列表)应为(1 4 5 5 6)

但是当列表变为空时我无法想象该怎么做。

你能给我一些帮助或某种想法吗?非常感谢你!

1 个答案:

答案 0 :(得分:1)

返回一个空列表(或list本身)。它是您的功能的基础案例。

(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))))))

要推断基本情况,请轻松考虑remove-digit的“最小”情况,并将空列表作为参数。

(remove-digit digit '())

对于提供的任何'()值,它应该显然返回digit