递归定义

问题描述 投票:0回答:1

我目前正在学习Scheme中的递归。我找到了这个递归定义,但是我不明白它在试图做什么。如果有人可以向我解释,我将不胜感激。这是定义:

(define (function ls)
    (if (null? ls) '()
        (append
            (map (lambda (x) (cons (car ls) x))
                 (function (cdr ls))
            )
            (function (cdr ls))
        )
    )
)
recursion racket r5rs
1个回答
0
投票

在当前状态下,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
© www.soinside.com 2019 - 2024. All rights reserved.