Recursion 递归定义
我目前正在学习Scheme中的递归。我找到了这个递归定义,但我不明白它试图做什么。如果有人能给我解释一下,我将不胜感激。定义如下:Recursion 递归定义,recursion,racket,r5rs,Recursion,Racket,R5rs,我目前正在学习Scheme中的递归。我找到了这个递归定义,但我不明白它试图做什么。如果有人能给我解释一下,我将不胜感激。定义如下: (define (function ls) (if (null? ls) '() (append (map (lambda (x) (cons (car ls) x)) (function (cdr ls)) ) (function (c
(define (function ls)
(if (null? ls) '()
(append
(map (lambda (x) (cons (car ls) x))
(function (cdr ls))
)
(function (cdr ls))
)
)
)
在当前状态下,
函数
只返回空列表,而不管输入是什么。然而,它确实敲响了警钟。执行该功能的尝试似乎失败:
(define (powerset ls)
(if (null? ls)
'(())
(append (map (lambda (x) (cons (car ls) x))
(powerset (cdr ls)))
(powerset (cdr ls)))))
你能看出区别吗?代码中的基本情况是错误的!如果您想知道,powerset
将返回列表中所有可能子集的集合:
(powerset '(1 2 3))
=> '((1 2 3) (1 2) (1 3) (1) (2 3) (2) (3) ())
在当前状态下,
函数
只返回空列表,而不管输入是什么。然而,它确实敲响了警钟。执行该功能的尝试似乎失败:
(define (powerset ls)
(if (null? ls)
'(())
(append (map (lambda (x) (cons (car ls) x))
(powerset (cdr ls)))
(powerset (cdr ls)))))
你能看出区别吗?代码中的基本情况是错误的!如果您想知道,powerset
将返回列表中所有可能子集的集合:
(powerset '(1 2 3))
=> '((1 2 3) (1 2) (1 3) (1) (2 3) (2) (3) ())