Recursion Scheme,带列表列表的递归

Recursion Scheme,带列表列表的递归,recursion,scheme,Recursion,Scheme,我的程序有点问题。这个过程取一个列表,当他的长度大于1时,应用一个减号过程,取2个列表,并进行差分。这是我对集合子集问题的结果。 我需要的示例: args='1'1'3' 长度!=1->过程ifnull?减“1”1 ->递归子cdr参数 args='1'3 长度=1->过程ifnull?减‘1’3- 结束 但是我的程序,我不知道什么,然后返回t 固定的: (define subsethood (lambda args (sub args) )) (define (sub

我的程序有点问题。这个过程取一个列表,当他的长度大于1时,应用一个减号过程,取2个列表,并进行差分。这是我对集合子集问题的结果。 我需要的示例:

args='1'1'3'

长度!=1->过程ifnull?减“1”1

->递归子cdr参数

args='1'3

长度=1->过程ifnull?减‘1’3-

结束

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

固定的:

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

从@OndrPem edit开始,只是为了在正确的位置

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

设置差异的过程,取2个参数-列表,例如:abababc=abae=b请发布一些示例输入和输出。现在还不清楚这个程序试图做什么。sub'1'1'2t sub'1'1t sub'2'1f它正在使用2个参数,但是如果我使用递归是因为我想对任意数量的参数使用它,它就不起作用了。idea原理是当第一个参数是第二个的子集,第二个是第三个的子集时返回t的程序。减号程序帮助我,因为如果返回的是第一个列表,如果是2个列表的子集,我可以继续递归,减少的列表和减号可以应用于其他2个参数,如果减号的返回值不是空列表,我不想继续,我可以说fI trued trace it>require lib trace.ss>trace sub>sub'1'9999'345'23132>sub'1'1'9999'345'23132>sub'1'9999'345 23132带有args的sub'1 9999 345 23132 Hm,而不是t return>sub'1'1'9999'345'23132,我的列表中有一些东西没有列出,这就是问题所在
(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)))