Scheme,带有列表列表的递归

时间:2011-12-10 22:17:17

标签: recursion scheme

我的手术有点问题。这个过程采用列表列表,虽然他的长度更大,然后1应用一个程序减去采取2个列表并做差异。我的结果与集合的子集的问题。 我需要的例子:

  

ARGS =( '(1)'(1)'(3))

     

长度!= 1 - >过程(if(null?(减去'(1)'(1))))

     

- >递归(sub(cdr args))

     

args =('(1)'(3))

     

长度!= 1 - >过程(if(null?(减去'(1)'(3)))) -

     

#f end。

     
    

但是我的程序我不知道什么然后返回#t ...

  
(define sub
  (lambda args
    (if(= (length args) 1) #t
       (if(null? ( minus (list-ref args 0) (list-ref args 1)))
          (sub (cdr args))
          #f))))

修正:)

(define subsethood
  (lambda args

    (sub args)
    ))

(define (sub args)

    (if(= (length args) 1) #t
       (if(null? ( minus (list-ref args 0) (list-ref args 1)))
          (sub (cdr args))
          #f)))

1 个答案:

答案 0 :(得分:0)

从@OndrPem编辑,只是在正确的位置。

(define subsethood
  (lambda args

    (sub args)
    ))

(define (sub args)

    (if(= (length args) 1) #t
       (if(null? ( minus (list-ref args 0) (list-ref args 1)))
          (sub (cdr args))
          #f)))