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