我目前正在学习Scheme中的递归。我找到了这个递归定义,但是我不明白它在试图做什么。如果有人可以向我解释,我将不胜感激。这是定义:
(define (function ls)
(if (null? ls) '()
(append
(map (lambda (x) (cons (car ls) x))
(function (cdr ls))
)
(function (cdr ls))
)
)
)
在当前状态下,function
仅返回空列表,无论输入如何。但是,它does响了。似乎无法实现powerset
函数:
powerset
您能发现区别吗?您的代码中的基本情况是错误的!如果您想知道,(define (powerset ls)
(if (null? ls)
'(())
(append (map (lambda (x) (cons (car ls) x))
(powerset (cdr ls)))
(powerset (cdr ls)))))
返回列表的所有可能子集的集合:
powerset