编程范式 22 笔记 函数式编程递归

power set

包含所有子集的集合 幂集
In computer programming, car /kɑːr/ (About this sound listen) and cdr (/ˈkʌdər/ (About this sound listen) or /ˈkʊdər/ (About this sound listen)) are primitive operations on cons cells (or “non-atomic S-expressions”) introduced in the Lisp programming language. A cons cell is composed of two pointers; the car operation extracts the first pointer, and the cdr operation extracts the second.
Thus, the expression (car (cons x y)) evaluates to x, and (cdr (cons x y)) evaluates to y.

(define (ps set)
    (if(null?set) '(())
        (append (ps (cdr set))
            (map(lambda (subset)
                (crns (car set)subset))
                (ps(cdr srt)))))
(define (ps set)
    (if(null?set) '(())
        (let ((ps-rest(ps (cdr set))))
            (append ps-rest
                (map (lambda (subset) (cms (car set) subset)) ps-rest)))))

let

(let ((x expr1)
     (y expr2)
     (z expr3))
     for (x,y,z))
(let ((x expr1)
     (y expr2)
     (z expr3))
     (a x y))
((lambda (x y)
    (a x y))

permute

> (permute '(1 2 3))
((1 2 3)(1 3 2)(2 1 3)(2 3 1)(3 1 2)(3 2 1))
(define (permute items)
    (if(null?set) '(())
    (apply append
        (map (lambda(elem) (map(lambda(permutation) (cras elem permutation)) (permute (remize items elem))))
            items))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值